Я использую Cygwin на Windows 7. Я на самом деле не пользователь Windows, поэтому мне уже немного неудобно иметь этот дополнительный слой между моей ОС и Zsh, моей любимой оболочкой.

Теперь мне часто приходится менять свой путь в Windows. Тот, который вы меняете через расширенные системные настройки. Тем не менее, я заметил, что это изменение PATH не распространяется на Zsh под Cygwin.

Очень хорошо, поэтому я смотрю в .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 .

Cygwin FAQ говорит,

Все переменные среды Windows импортируются при запуске Cygwin

Но, похоже, это не так, или объявление export PATH в .zshrc перезаписывает все, что делает Cygwin.

Излишне говорить, что я очень смущен. Итак, вот вопрос:

Когда я редактирую свой Windows PATH, каков рекомендуемый способ сообщить оболочке Cygwin, что она изменилась? Нужно ли мне всегда редактировать мой профиль оболочки вручную? Или это может быть сгенерировано автоматически?

1 ответ1

2

В сценарии install.sh для oh-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 (которая, в свою очередь, была скопирована из Windows, когда вы запускали Cygwin) была добавлена во время установки в .zshrc, эффективно блокируя ее.

Cygwin выбирает эти переменные среды при запуске, затем запускается .zshrc (и другие файлы, такие как .zshenv), переопределяя все экспортированные переменные среды.

Если вы удалите оператор экспорта из .zshrc, Zsh просто выберет PATH из своего родительского процесса, который должен быть PATH Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .