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 응용 프로그램이 내 응용 프로그램을 무시한다는 것을 발견했습니다 .