내 MacBook에서는 zsh를 사용하고 통과합니다..zshenv
그리고.zshrc
.
echo
끝에 명령문을 추가 하면 .zshenv
변수 $PATH
는 다음과 같습니다.
/opt/homebrew/bin
/opt/homebrew/sbin
$HOME/.local/bin
/usr/bin
/bin
/usr/sbin
/sbin
그러나 터미널을 실행하면 $PATH
다음과 같습니다.
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/opt/homebrew/bin
/opt/homebrew/sbin
$HOME/.local/bin
my - 에서 파생된 echo $PATH
구문의 시작 부분에 구문을 추가했는데 실제로 load 시 두 번째 구문으로 변경되는 것을 확인했습니다..zshrc
.zshenv
.zshrc
$PATH
어떻게 하면 이를 방지할 수 있나요?
나는 이것이 의 문서와 관련이 있다고 생각합니다 /etc
. 예를 들어 /etc/paths
다음과 같은 내용이 포함된 파일이 있다는 것을 발견했습니다 .
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
답변1
이 질문에 대한 답은 다음에서 찾을 수 있습니다.이 문제AskDifferent(Apple의 Unix 및 Linux StackExchange 버전)에서.
설명하다
zsh를 가져오면 다음 순서로 파일을 읽습니다(zsh 공식 문서 참조).
먼저 /etc/zshenv에서 명령을 읽습니다. 이는 재정의될 수 없습니다. [...] 그런 다음 $ZDOTDIR/.zshenv에서 명령을 읽습니다. 쉘이 로그인 쉘인 경우 /etc/zprofile에서 명령을 읽은 다음 $ZDOTDIR/.zprofile에서 읽습니다. 그런 다음 쉘이 대화형이면 /etc/zshrc에서 명령을 읽은 다음 $ZDOTDIR/.zshrc에서 읽습니다. 마지막으로, 쉘이 로그인 쉘이면 /etc/zlogin 및 $ZDOTDIR/.zlogin을 읽습니다.
macOS에서는 다음 파일의 내용을 기반으로 /etc/zprofile
소스 스크립트를 덮어씁니다.$PATH
/etc/paths
/etc/paths.d
/etc/manpaths
/etc/manpaths.d
그것을 처리하는 방법?
이 문제를 해결하려면 다음을 수행할 수 있습니다.
- 직접 수정
/etc/paths
(권장하지 않음) $PATH
수정된 행을.zprofile
또는 로 이동합니다.zshrc
.