затем я выхожу из системы и снова вхожу, и все это работает, но по какой-то причине PATH переменная не задана. Он распознает JAVA_HOME, но не новый PATH, смотрите этот фрагмент терминала:
С моей точки зрения, лучший способ - добавить следующие строки в ~/.zshrc файл (если у вас его еще нет, создайте его):
if [ -d "/path/to/jdk" ] ; then export PATH="/path/to/jdk/bin:$PATH"fi
Затем перезапустите свой zsh, или просто убежать source ~/.zshrc и тогда ваш ПУТЬ должен быть именно таким, как вы хотите.
Или, если вы хотите, чтобы изменение было общесистемным, добавьте предыдущий код в конец /etc/zsh/zshenv файл.
Но ни в коем случае не используйте /etc/profile.d для автоматического запуска скриптов в zsh. Этот каталог полезен только для bash оболочка, а не zsh как и в вашем случае. Чтобы понять это, откройте /etc/profile файл, который представляет собой удар файл инициализации и ни в коем случае не зш файл инициализации, и вы увидите где - то в конце файла:
if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset ifi
Итак, ваши скрипты из /etc/profile.d каталог будет автоматически запущен в zsh только если вы добавите предыдущий код в файл инициализации zsh, например /etc/zsh/zprofile например, или источник /etc/profile в /etc/zsh/zprofile файл.
Я нахожу, что размещение всего в одном .zshenv файл быстро становится трудным для управления. Я рекомендую установить о-боже-ш-ш а затем помещать различные настройки (переменные среды, функции) в .oh-my-sh/custom/ каталог как отдельный .zsh файлы.
Я также обнаружил, что этот подход работает безупречно при подключении ssh к машине при изменении переменных env, таких как PATH. Кроме того, это очень хорошо работает вместе с vcsh для сохранения резервных копий и синхронизации настроек.
С JAVA_HOME установлен, вы подтвердили, что эти скрипты загружаются автоматически, не так ли?
Единственное логическое объяснение заключается в том, что PATH устанавливается позже каким-то образом. Он должен быть изначально установлен PAM, который гласит /etc/environment, и, насколько я знаю, это происходит раньше /etc/profile.d/*.sh файлы являются исходными. Возможно, в этом отношении zsh работает по-другому по сравнению с bash.
Просто столкнулся с этой проблемой локально после запуска обновлений. Похоже, основная проблема заключается в том, что Drush не знает, где найти законную копию php, которая включает pdo. К счастью, он поддерживает сохранение этого пути в переменной окружения, поэтому я сделал это в командной строке: