Preciso atualizar manualmente meu PATH nos shells Cygwin?

Preciso atualizar manualmente meu PATH nos shells Cygwin?

Eu uso o Cygwin no Windows 7. Não sou realmente um usuário do Windows, então já é um pouco inconveniente para mim ter essa camada extra entre meu sistema operacional e o Zsh, meu shell preferido.

Agora, frequentemente tenho que alterar meu PATH no Windows. Aquele que você altera por meio das preferências avançadas do sistema. No entanto, notei que essa alteração no PATH não se propaga para Zsh no Cygwin.

Muito bem, então eu olho .zshrce encontro:

# 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"

Eu não adicionei isso (bem, talvez um ffmpegpouco no final). De onde isso vem? O Cygwin configura isso inicialmente quando instala o Zsh? Oh-my-zsh descobre isso de alguma forma? De alguma forma, ele deve ter conhecido meu PATH em algum momento e adicionado isso ao meu arquivo .zshrc.

OPerguntas frequentes sobre Cygwindiz,

Todas as variáveis ​​de ambiente do Windows são importadas quando o Cygwin é iniciado

Mas esse não parece ser o caso - ou a export PATHdeclaração no .zshrcsubstitui tudo o que o Cygwin faz.

Escusado será dizer que estou muito confuso. Então aqui está a pergunta:

Quando edito meu PATH do Windows, qual é a maneira recomendada de informar ao shell do Cygwin que ele foi alterado? Preciso sempre editar meu perfil de shell manualmente? Ou isso pode ser gerado automaticamente?

Responder1

Noinstalar.shscript para oh-my-zsh você pode ver isto:

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

O PATH que você tinha no shell do Cygwin (que por sua vez foi copiado do Windows quando você iniciou o Cygwin) foi adicionado durante a instalação ao .zshrc, bloqueando-o efetivamente.

O Cygwin seleciona essas variáveis ​​de ambiente na inicialização e, em seguida, o .zshrc (e outros arquivos como .zshenv) são executados, substituindo quaisquer variáveis ​​de ambiente exportadas.

Se você removesse a instrução de exportação do .zshrc, o Zsh apenas pegaria o PATH de seu processo pai, que deveria ser o PATH do Windows.

informação relacionada