Когда я использую ZSH, как установить PATH в файле /etc/profile.d?

Я использую zsh в качестве моей оболочки, и я пытаюсь настроить свою среду.

Обычно я определяю свою переменную $JAVA_HOME, создавая файл:

со следующим содержимым

export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

, затем я выхожу из системы и обратно, и все работает, но по какой-то причине переменная PATH не задана. Он распознает JAVA_HOME, но не новый PATH, см. Этот фрагмент терминала:

~  echo $JAVA_HOME
/usr/lib/jvm/jdk1.8.0_05
~  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

, и я подтвердил это, пытаясь запустить командную форму jvm

~  java -version
zsh: command not found: java

PATH не включает $JAVA_HOME, как следует. есть ли что-то еще, что я должен проверить?

Я проверил, что если я запустил:

source /etc/profile.d/java.sh

все работает правильно, и мои переменные устанавливаются так, как должны, но не должны скрипты в /etc/profile.d запускаются автоматически?

1
задан 4 June 2014 в 03:15

3 ответа

Я считаю, что быстро помещать все в один файл .zshenv становится сложно. Я рекомендую установить oh-my-sh и затем поместить различные настройки (env vars, functions) в каталог .oh-my-sh/custom/ в виде отдельных файлов .zsh.

Я также обнаружил, что этот подход работает безупречно, когда ssh ' в машину при изменении переменных env, таких как PATH. Также он отлично работает вместе с oh-my-sh для сохранения резервных копий и синхронизации.

2
ответ дан 24 May 2018 в 07:02
  • 1
    Использование oh my zsh framework, где бы вы поместили переменную с IP-адресом (удаленным сервером) для использования для доступа ssh? Мне нужен ip для git и скрипт входа на сервер. – Timo 20 December 2017 в 15:12
  • 2
    Гектометр Не совсем уверен, что вы имеете в виду. Я бы поставил конфигурацию как ip-адреса и имена пользователей для ssh в ~/.ssh/config – dvim 16 January 2018 в 19:55

Поскольку JAVA_HOME установлен, вы подтвердили, что эти сценарии получены автоматически, не так ли?

Единственное логическое объяснение заключается в том, что PATH устанавливается позже каким-то образом. Он должен быть первоначально установлен PAM, который читает /etc/environment, и насколько я знаю, что происходит до того, как будут получены файлы /etc/profile.d/*.sh. Возможно, zsh работает по-разному по сравнению с bash в этом отношении.

1
ответ дан 24 May 2018 в 07:02

Только что запутался в этой проблеме локально после запуска обновлений. Похоже, проблема с корнем - Drush не знает, где найти законную копию php, которая включает pdo. К счастью, он поддерживает этот путь в переменной среды, поэтому я сделал это в командной строке:

export DRUSH_PHP="/Applications/MAMP/bin/php/php5.4.39/bin/php"

Это исправило проблему, поэтому я редактировал .zshrc и добавил, что в файл проблема решена.

0
ответ дан 24 May 2018 в 07:02

Другие вопросы по тегам:

Похожие вопросы: