내 안에는 다음이 있습니다 .bash_profile
.
echo bash_profile
if [ -f $HOME/.bashrc ]; then
echo Sourcing bashrc
source $HOME/.bashrc
echo Sourced bashrc
fi
내 .bashrc
파일은 꽤 길지만 마지막에는 echo Path set
선언과 일부 내보내기가 있습니다.
실행하면 sudo su - username
다음과 같은 결과가 나타납니다.
bash_profile
Sourcing bashrc
Path set
Sourced bashrc
그러나 실행하면 sudo su - username -c ''
다음과 같은 결과가 나타납니다.
bash_profile
Sourcing bashrc
Sourced bashrc
source
명령에서 이 -c
플래그 사용을 중지 한 이유는 무엇입니까 ? 실행 명령을 사용할 때 PATH
변경 사항을 적용 해야 합니다..bashrc
sudo su - username -c
답변1
이 파일은 실제로 대화형 셸에서 가져오기 위한 것입니다. 비대화형 환경(예: 오류 없이 ) .bashrc
에서 가져올 수 있도록 하려면 파일 상단 근처에 "대화형 테스트"를 추가하는 것이 일반적입니다. .bash -c
su -c
예를 들어 .bashrc
Ubuntu 기본 파일( /etc/skel
계정 생성에서 복사됨)의 시작 부분은 다음과 같습니다.
$ head /etc/skel/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
그래서 아마도 당신의.bashrc
예성공적으로 획득했습니다. 하지만 도착하기 전에 수정하세요 PATH
.