![bashrc 명령이 쉘 재로드를 지원해야 합니까?](https://linux55.com/image/180152/bashrc%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%89%98%20%EC%9E%AC%EB%A1%9C%EB%93%9C%EB%A5%BC%20%EC%A7%80%EC%9B%90%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
사용자가 새 터미널을 열지 않고 셸을 다시 로드할 때마다 exec $SHELL
파일이 bashrc
다시 실행됩니다.
문제는 다음과 같습니다
쉘이 시작될 때 실행되도록 의도된 명령이 이를 명시적으로 지원해야 합니까?
물론 셸 기능은 셸 프로세스 교체 이후에도 유지될 수 없지만 환경 변수는 가능합니다. 따라서 일반적인 부작용은 PATH
물건을 여러 번 추가하는 것입니다.
객관적인 입장을 유지하기 위해 저는 이에 대한 공식적인 지침이 있는지 여부에 주로 관심이 있습니다.
답변1
이 .bashrc
파일은 귀하의 항목을 보관하도록 설계되었습니다생각하다새로운 대화형 셸이 시작될 때마다 실행됩니다. 이는 변수를 설정하기에 적합한 위치가 아닙니다 PATH
. 예를 들어 각 셸 초기화에서 실행해야 하는 항목만 포함해야 합니다.
이것이 바로 bash 프로필의 두 "계열"이 있는 이유입니다.
/etc/bashrc
,~/.bashrc
새로운 책을 읽을 때마다 대화형 쉘그건로그인 쉘이 아님시작되었습니다./etc/profile
~/.bash_profile
,~/.bash_login
및 (순서대로) 새로운 대화형 로그인 쉘이 시작될 때마다 획득됩니다 .~/.profile
실제로 대부분의 시스템에서 이는 로그인할 때 이 파일 세트를 한 번 읽은 다음 새 터미널을 열거나 새 대화형 셸을 시작할 때마다 ~/.profile
읽힌다는 것을 의미합니다.~/.bashrc
따라서 새 셸을 시작할 때마다 무언가가 실행되어 ~/.bashrc
문제를 일으키는 경우 시스템이 잘못 구성되어 ~/.bashrc
사용 중임을 의미합니다.~해야 한다~/.bash_profile
또는 를 사용하세요 ~/.profile
. 즉, .bashrc
새로운 대화형 비로그인 셸이 시작될 때마다 반드시 실행되어야 합니다.
답변2
/etc/profile에 있는 이 기능을 사용할 수 있습니다.
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
[ ! -d "$1" ] && return
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
디렉터리를 추가하기 전에 디렉터리가 이미 PATH에 있는지 확인합니다.
~/.profile 또는 ~/.bash_profile에서 이것을 사용하십시오:
path_munge /directory/to/add before
# or
path_munge /directory/to/add/also after
PATH에 필요한 디렉터리를 추가합니다.
/etc/profile은 이 기능을 억제하므로 자신의 프로필에 복사하세요.