ZSH는 $PATH를 읽지 않습니다.

ZSH는 $PATH를 읽지 않습니다.

나는 최근에 내 개인 스크립트를 내 변수 $HOME에 포함시키기로 결정했습니다. $PATH그러나 이를 실행하려고 하면 ZSH가 "명령을 찾을 수 없습니다"라고 응답합니다. 다음 줄은 내가 추가한 내용입니다..xprofile

PATH="$PATH:~/.local/share/";export PATH

일부 스크립트가 있지만 ~/.local/share/ZSH에서는 실행할 수 없지만 bash에서는 잘 작동합니다. 위의 라이브를 내 라이브에 추가하려고 시도했지만 .zshrc작동하지 않았습니다.

답변1

~변수가 아니며 변수처럼 동작하지 않습니다.

~쉘은 일반적으로 인용할 때 확장되지 않습니다. 쉘의 특수한 물결표 문자 처리에 의존하지 않고 홈 디렉토리에 대한 올바른 경로를 얻기 위해 모든 쉘에서 $HOME대체를 사용할 수 있습니다(대화식 쉘에서 주로 사용되는 바로가기).~

$HOME 하다이는 변수가 작동할 것으로 예상하는 대로 작동합니다. 즉, 큰따옴표로 묶으면 홈 디렉토리 경로로 확장됩니다.

또한 그럴 가능성이 낮다는 점도 참고하세요 PATH.아니요이미 환경 변수입니다. 따라서 내보낼 필요가 없습니다.

zsh셸 에서 ~/.local/share명령 검색 경로 끝에 추가하려면 다음을 수행할 수도 있습니다.

path+=~/.local/share

또는

path+=$HOME/.local/share

배열 변수 path묶음스칼라 변수에 추가됩니다 PATH. 즉, 위와 같이 배열을 업데이트하면 path추가된 요소가 value 끝에 추가됩니다 $PATH.

답변2

ZSH 시작 스크립트는 ~/.zshrc및 입니다 ~/.zshenv. 저는 보통 전역 환경 변수 PATH~/.zshenv.

시작 스크립트의 일부 다른 지시문은 귀하의 지시문을 덮어쓰거나 대체할 수 있습니다 PATH. zsh 시작 중에 어떤 일이 발생하는지 확인하려면 다음을 실행하세요.

zsh -x 2>&1 </dev/null |grep PATH 

스크립트를 시작해도 이미 실행 중인 쉘에는 영향을 주지 않습니다. 이를 업데이트하려면:

  • 예를 들어 스크립트를 얻으십시오.. ~/.zshenv
  • exec zsh -lzsh( ) 재실행
  • 로그아웃했다가 다시 로그인하세요.

관련 정보