역사적으로 프로필 파일 ( /etc/profile및 ~/.profile)은 텍스트 콘솔에 로그인했을 때 호출되었으며 다른 용도로 사용되었습니다.
- 세션에 대한 환경 변수 및 기타 매개 변수 (예 : umask)를 설정하십시오.
- 세션 시작시 추가 프로그램을 실행하십시오 (예 : 이메일 알림).
- 쉘과 다른 경우 세션에 대한 프로그램을 실행하십시오 (예 : 다른 쉘 또는 X Window).
- 터미널 매개 변수를 설정하십시오 (예 :)
stty.
- 쉘 매개 변수 (예 : 별명)를 설정하십시오.
이 모든 목적은 나중에 야 별개로 식별되지 않았습니다. 프로파일 스크립트는 대화식 세션 (터미널 상호 작용, 다른 프로그램 시작)에서만 의미가있는 작업을 수행 할 수 있기 때문에 원격 쉘 호출 ( rsh )이 도입 되었을 때 rsh는 원격 쉘을 로그인 쉘로 호출하지 않기로 결정했습니다. 프로필 스크립트가 실행되지 않도록합니다. (일부 버전의 rshd경우 원격 쉘을 로그인 쉘로 실행할 수있는 옵션이 있습니다.) Ssh는 rsh를 대체 할 수 있도록이 동작을 복사했습니다.
프로파일 스크립트를 실행하려면 명시 적으로 호출 할 수 있습니다.
ssh 127.0.0.1 '. /etc/profile; . ~/.profile; ydisplay'
.쉘 내에서 프로파일 스크립트를로드 하는 명령 에 유의하십시오 . 이들은 외부 프로그램이 아니라 해당 쉘 내에서 실행되는 명령입니다.
모든 사용자에 대해 전 세계적으로 환경 변수를 설정하려면, 많은 시스템에 또 다른 방법이있다 : 대신 그것을에서 정의하는 /etc/profile, 그것을 정의한다 /etc/environment. 이 파일은 pam_env모듈을 통해 읽습니다 . 대부분의 Linux 배포판은이를 읽도록 설정되어 있습니다.
로그인 쉘이 bash이면 추가 가능성이 있습니다. 일반적으로 환경 변수를 설정해서는 안됩니다.bashrc (대화식 쉘이있는 터미널을 통과하는 경우를 제외하고는 X 세션에서 설정되지 않기 때문에 텍스트 콘솔 이상에서 대화 형으로 로그인하면 설정되지 않기 때문에 환경 변수를 설정하지 않아야 함) ssh는 다른 프로그램에서 쉘을 호출하면 사용자 정의 설정을 무시하므로). 그러나 bash에는 내가 이해하지 못한 이상한 기능 ~/.bashrc이 있습니다. 두 가지 관련이없는 상황에서 읽습니다 .
- 로그인 쉘이 아닌 대화식 쉘에서;
- bash가
rshdor에 의해 호출되었다고 생각하면 로그인 쉘이 아닌 비 대화식 쉘에서 sshd.
ssh를 통해 명령을 실행하면 두 번째 경우입니다. 당신은 당신의 프로필을 읽고 읽고 주선 할 수 /etc/profile및 .profile에서 .bashrc. 에 다음 코드를 포함하십시오 ~/.bashrc.
case $- in
*i*) :;; # this is an interactive shell, fine
*) # This is not an interactive shell! This must be a non-interactive remote shell session.
. /etc/profile; . ~/.profile
return;;
esac
ydisplay작동합니까? 않는ssh 127.0.0.1 /usr/app/cpn/bin/ydisplay일을?