su를 실행할 때 .bash_profile이 소스되지 않습니다


41

예를 들어 , user1에 대한 수정 사항 이있는 사용자 .bash_profile가 있습니다 . 이 변경 사항은 내가 로그온 하거나 로 로그인하면 제대로 작동합니다 .PATHexport PATH=/some/place:$PATHuser1su - user1

그러나 suas 를 통해 명령을 실행하려고하면 다음 과 같이하십시오 root.

su -c test.sh oracle

(테스트 포함 echo $PATH)

수정 된 것으로 보이지 않습니다 PATH(또는 PATH그 문제에 대해 root 's ). 또한에 복사 .bash_profile를 시도했지만 .profile아무 소용이 없습니다.

왜 이런 일이 발생합니까?


사용 --login 스위치su
Nikhil Mulley

1
참고 -bash
Nikhil Mulley

답변:


60

지정한 파일 중 하나에서 읽지 않는 대화식이지만 비 로그인 셸 su없이 사용 -l하거나 -시작 bash합니다. -l또는 -옵션을 사용 하거나 관련 구성을에 넣으십시오 /root/.bashrc.

구성 파일의 빠른 요약 :

  • 로그인 쉘 ( -l/ --login) 읽어 /etc/profile첫째, 다음 첫 번째는의 발견 : ~/.bash_profile, ~/.bash_login,와 ~/.profile.
  • 대화 형이지만 비 로그인 셸 ( -i)은 옵션을 사용하고 다른 곳을 보도록 지시 하지 않는 한 순서대로 /etc/bash.bashrc및을 읽습니다 . ~/.bashrc--rcfile
  • 비 대화식 쉘 (예 : -lor -i플래그 를 사용하지 않고 다른 프로그램에서 시작) 은 BASH_ENV환경 변수에 지정된 파일을 읽습니다 .
  • sh로그인 셸로 실행하면 /etc/profile~/.profile이 순서대로 읽습니다 .
  • sh대화 형 비 로그인으로 실행하면에 지정된 파일을 읽습니다 ENV.

5

Bash는 로그인 쉘이라고 생각하는지에 따라 다르게 동작합니다. 즉, 시스템에 로그온 할 때 첫 번째 쉘이 실행됩니다. .bash_profile로그인 쉘인 경우 에만 읽습니다 . PATH-changing 코드를 .bashrc대신 넣으면 로그인 쉘뿐만 아니라 모든 대화식 bash 쉘에 대해 실행됩니다.


0

Scientific Linux 6 (또는 아마도 RHEL 6)에서 Gnome 환경을 사용하는 경우 터미널을 시작하십시오. Edit-> Profile Preferences-> "Title and Command"탭으로 이동 하십시오. "로그인 명령으로 명령 실행"체크 상자가 선택되어 있는지 확인하십시오. 내가 .bash_profile하지 않으면 그놈 터미널 응용 프로그램이 내 무시하는 것으로 나타났습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.