저는 Windows 7에서 Cygwin을 사용합니다. 저는 실제로 Windows 사용자가 아니기 때문에 OS와 제가 선택한 셸인 Zsh 사이에 이 추가 계층을 두어야 한다는 것이 이미 약간 불편합니다.
이제 Windows에서 PATH를 자주 변경해야 합니다. 고급 시스템 기본 설정을 통해 변경하는 것입니다. 그러나 이 PATH 변경 사항은 Cygwin에서 Zsh로 전파되지 않는 것으로 나타났습니다.
좋습니다. 을 살펴보니 다음 .zshrc
과 같은 내용이 나와 있습니다.
# User configuration
export PATH="/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Intel/iCLS Client:/cygdrive/c/Program Files/Intel/iCLS Client:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Windows Live/Shared:/cygdrive/c/Program Files (x86)/Intel/OpenCL SDK/3.0/bin/x86:/cygdrive/c/Program Files (x86)/Intel/OpenCL SDK/3.0/bin/x64:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/DAL:/cygdrive/c/Program Files (x86)/Intel/Intel(R) Management Engine Components/IPT:/cygdrive/c/Program Files/ffmpeg/bin"
# export MANPATH="/usr/local/man:$MANPATH"
나는 그것을 추가하지 않았습니다(글쎄, 아마도 ffmpeg
마지막 부분에 있을 수도 있습니다). 그거 어디서 났어? Cygwin은 Zsh를 설치할 때 처음에 이를 설정합니까? Oh-my-zsh가 어떻게든 알아낼 수 있나요? 어쨌든 그것은 어느 시점에서 내 PATH를 알고 그것을 내 .zshrc
.
그만큼시그윈 FAQ말한다,
Cygwin이 시작되면 모든 Windows 환경 변수를 가져옵니다.
그러나 그렇지 않은 것 같습니다. 또는 Cygwin의 export PATH
선언이 .zshrc
무엇이든 덮어씁니다.
말할 필요도 없이 나는 매우 혼란스럽다. 질문은 다음과 같습니다.
Windows PATH를 편집할 때 Cygwin 셸에 변경되었음을 알리는 권장 방법은 무엇입니까? 항상 쉘 프로필을 수동으로 편집해야 합니까? 아니면 자동으로 생성될 수 있나요?
답변1
에install.shoh-my-zsh 스크립트에서 다음을 볼 수 있습니다.
echo "\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m"
sed -i -e "/export PATH=/ c\\
export PATH=\"$PATH\"
" ~/.zshrc
Cygwin 셸에 있는 PATH(Cygwin을 시작할 때 Windows에서 복사됨)는 설치 중에 .zshrc에 추가되어 효과적으로 잠겼습니다.
Cygwin은 시작 시 이러한 환경 변수를 선택한 다음 .zshrc(및 .zshenv와 같은 기타 파일)가 실행되어 내보낸 모든 환경 변수를 재정의합니다.
.zshrc에서 내보내기 문을 제거한 경우 Zsh는 Windows의 PATH여야 하는 상위 프로세스에서 PATH를 선택합니다.