`sudo su - 사용자 이름 -c`를 사용할 때 .bash_profile에서 .bashrc를 가져올 수 없습니다.

`sudo su - 사용자 이름 -c`를 사용할 때 .bash_profile에서 .bashrc를 가져올 수 없습니다.

내 안에는 다음이 있습니다 .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변경 사항을 적용 해야 합니다..bashrcsudo su - username -c

답변1

이 파일은 실제로 대화형 셸에서 가져오기 위한 것입니다. 비대화형 환경(예: 오류 없이 ) .bashrc에서 가져올 수 있도록 하려면 파일 상단 근처에 "대화형 테스트"를 추가하는 것이 일반적입니다. .bash -csu -c

예를 들어 .bashrcUbuntu 기본 파일( /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.

관련 정보