<<user_acct>>
앞서 언급했듯이 기본 구성 파일을 로드하는 데 문제가 있습니다 sudo su -l <<user_acct>>
.
안에 .profile
,
if [ -r "${HOME}/.profile.custom" ]; then
. "${HOME}/.profile.custom"
fi
내가 읽은 내용을 바탕으로(예: 이와 유사한 답변)하나), -l
로그인 쉘을 트리거했어야 했고 fetch 가 실행되었지만 .profile
에 설정된 환경 변수가 존재하지 않기 때문에 작동하지 않는 것 같습니다 (반면 .profile.custom
에 방금 실행하면 . .profile
표시될 것입니다).
수정된 질문: 이유가 무엇인지 또는이 문제를 해결하는 방법?
답변1
로그인 쉘일 때, bash는 그것을 먼저 찾습니다 ~/.bash_profile
. 찾지 못하면 찾습니다 ~/.bash_login
. 찾지 못하면 검색합니다 ~/.profile
. 어쨌든, 로그인 쉘이 대화형이더라도 bash는 이를 읽지 않습니다 ~/.bashrc
.
다음 사항을 준수 ~/.bash_profile
하고 다음 사항을 수행하지 않는 것이 좋습니다 ~/.bash_login
.
if [ -e ~/.profile ]; then . ~/.profile; fi
case $- in *i*) if [ -e ~/.bashrc ]; then . ~/.bashrc; fi;; esac
이렇게 하면 .profile
로그인 쉘이 bash인지 다른 sh 변형인지에 관계없이 로드되고 .bashrc
쉘이 로그인 쉘인지 여부에 관계없이 bash에 의해 로드됩니다.
답변2
하지 마세요 sudo su
. 필요하지 않습니다. sudo -i -u loginname
당신이 원하는 것.
답변3
질문 작성자는 다음과 같은 해결책을 제시합니다.
결국 나는 내 문제에 대한 해결책을 찾았습니다. 그것은 매우 사소한 것으로 판명되었습니다. 환경 변수를 설정하여
.bash_profile
설정하기만 하면 됩니다.
bash
맨페이지 에 따르면 , 논의한 대로여기,bash가 --login 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 /etc/profile 파일(파일이 있는 경우)에서 명령을 읽고 실행합니다.파일을 읽은 후 ~/.bash_profile, ~/.bash_login, ~/.profile을 순서대로 찾아 존재하고 읽을 수 있는 첫 번째 파일부터 명령을 읽고 실행합니다.이 동작은 셸을 시작할 때 --noprofile 옵션을 사용하여 비활성화할 수 있습니다.
..핵심은첫 번째존재하는 것.
교훈: "세세한" 활자체 읽기