su를 실행할 때 .bash_profile을 얻지 못했습니다.

su를 실행할 때 .bash_profile을 얻지 못했습니다.

user1예를 들어 , 그것을 수정한 사용자가 있는데 .bash_profile그 중 한 명이 변경되었습니다. PATH예: export PATH=/some/place:$PATH. 로그인 user1하거나 실행 하면 su - user1.

su그러나 예를 들어 as 를 통해 명령을 실행하려고 하면 root다음과 같습니다.

su -c test.sh oracle

(테스트 포함 echo $PATH)

PATH수정된 것 (또는 루팅된 PATH것)은 아닌 것 같습니다 . 또한 .bash_profile에 복사를 시도했지만 .profile성공하지 못했습니다.

왜 이런 일이 발생합니까?

답변1

su대화형 비로그인 셸 없이 -l또는 대화식 비로그인 셸로 실행되면 -지정한 파일에서 읽지 않습니다. 또는 옵션을 bash사용 하거나 관련 구성을 에 넣습니다 .-l-/root/.bashrc

구성 파일에 대한 간략한 요약:

  • 로그인 셸( -l/ --login)이 /etc/profile먼저 읽은 다음 첫 번째 항목 ~/.bash_profile인 , ~/.bash_login및 을 읽습니다 ~/.profile.
  • 대화형이지만 로그인이 아닌 쉘( -i)은 해당 순서로 합계를 읽습니다 /etc/bash.bashrc(이 옵션을 사용하고 다른 곳을 보라고 지시하지 않는 한). ~/.bashrc--rcfile
  • -l또는 플래그 없이 다른 프로그램에서 시작된 것과 같은 비대화형 셸은 -i환경 변수에 지정된 파일을 읽습니다 BASH_ENV.
  • 로그인 쉘로 실행하면 sh합계를 순차적으로 읽습니다 /etc/profile.~/.profile
  • 대화형 비로그인으로 실행 sh하면 ENV.

답변2

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

답변3

Scientific Linux 6(또는 RHEL 6)에서 Gnome 환경을 사용하는 경우 터미널을 실행합니다. Edit-> Profile Preferences-> "Title and Command"탭 으로 이동하세요 . 로그인 셸로 명령 실행 확인란이 선택되어 있는지 확인하세요. .bash_profile내가 이렇게 하지 않으면 Gnome Terminal 응용 프로그램이 내 응용 프로그램을 무시한다는 것을 발견했습니다 .

관련 정보