.bashrc
대화식으로 실행될 때만 bash의 구성 파일입니다. bash를 시작할 때만로드되며 sh
(bash가 name을 통해 호출 된 경우에도) 다른 프로그램을 실행할 때가 아닙니다 sh
. 그리고 bash가 대화 형 일 때만로드되며 스크립트를 사용하거나 명령을 실행할 때가 아닙니다 -c
.
sudo sh -c 'echo $PATH'
또는 sudo bash -c 'echo $PATH'
대화식 쉘을 호출하지 않으므로 .bashrc
관련되지 않습니다.
sudo su; echo $PATH
루트 쉘의 대화식 인스턴스를 실행합니다. 그것이 bash라면 ~root/.bashrc
로드됩니다. 이 스 니펫은 echo $PATH
이 대화식 쉘이 종료되면 실행 되므로 대화식 쉘에서 발생하는 내용은 스 니펫이 마지막에 인쇄하는 내용에 영향을 미치지 않습니다. 그러나로 echo $PATH
시작되는 대화식 쉘 프롬프트에 입력하면에 의해 sudo su
설정된 값이 표시됩니다 ~root/.bashrc
.
.bashrc
로그인 쉘이 아닌 각 대화식 쉘에서 호출 되기 때문에 (bash의 설계 결함 인 대화식 로그인 쉘조차도) 환경 변수를 정의하는 것은 잘못된 곳입니다. .bashrc
키 바인딩, 별명 및 완료 설정과 같은 대화식 bash 설정에 사용하십시오 . : 로그인 할 때로드되는 파일에 설정된 환경 변수 ~/.pam_environment
나 ~/.profile
.
그래서 설정 PATH
에 .profile
대신 .bashrc
하고, 하나는 로그인과 쉘을 실행 sudo -i 'echo $PATH'
하거나, 명시 적으로 소스 .profile
와를 sudo sh -c '. ~/.profile; echo $PATH'
.