쉘 및 .profile, .bash_profile, .bashrc에 대한 질문

쉘 및 .profile, .bash_profile, .bashrc에 대한 질문

나는 aix 7.1을 사용하고 있고 내 쉘은 bash입니다.

  • 만약 내가한다면
    ssh ibmunix 
    gqlplus  user/pass
    
    모든 것이 잘 작동하고 gqlplus시작됩니다. gqlplus켜짐/opt/freeware/bin
  • 다른 기계에서 하면
    ssh ibmunix "gqlplus  user/pass"
    
    오류 메시지가 나타납니다
    gqlplus: command not found
    
  • 만약 내가한다면
    ssh -t  ibmunix "source .bash_profile; gqlplus  user/pass"
    
    좋은 결과.

문제는 ssh자동으로 읽을 수 있느냐는 것입니다 .bash_profile.

답변1

먼저 사용자 환경에서 sshd_config를 활성화하는 솔루션을 찾았습니다.

PermitUserEnvironment yes

그런 다음 $HOME/.ssh/environment를 편집하고 PATH와 원하는 것을 입력하십시오.

$HOME/.ssh/environment 파일에는 좋은 환경 파일 내용 등 변수 및 설명 이외의 내용이 포함될 수 없습니다.

HOME=/home/user
PATH=$PATH:/opt/freeware/sbin:/bin:/opt/freeware/bin:/usr/bin:/sbin:/usr/sbin

잘못된 환경 파일 콘텐츠

source $HOME/.profile
export PATH=$PATH:/usr/bin

권한도 수정해야 합니다. 그렇지 않으면 작동하지 않습니다. 올바른 권한은 .ssh의 경우 0700, .ssh/environment의 경우 0400입니다.

ls -lhd .ssh/
drwx------ 2 username username 4,0K nov  4 16:29 .ssh//
ls -lhd .ssh/environment
-r-------- 1 username username 73 nov  4 16:29 .ssh/environment

유효한 증거. Linux에서는 sed_64 명령이 존재하지 않으며 Ibmaix 원격 시스템의 /opt/freeware/bin 디렉토리에 있습니다.

ssh linuxmachine sed_64
bash: sed_64: command not found

ssh remoteaix sed_64
Usage: sed_64 [OPTION]... {script-only-if-no-other-script} [input-file]...

  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script

.....

경고: ssh를 사용하면 .bashrc 및 .bash_profile보다 먼저 .ssh/environment를 읽으므로 올바른 경로를 입력하지 않으면 .bash_profile, .bashrc에 올바른 경로가 설정되어 있어도 일부 명령을 찾을 수 없습니다.

경고: 이 구성은 가정의 개인 환경에서만 안전하며 생산/심각한 장소에서는 사용할 수 없습니다. PermitUserEnvironment 옵션을 사용하면 모든 사용자가 로그인 셸과 ForcedCommand를 우회할 수 있기 때문입니다.

관련 정보