Я использую в zsh
качестве оболочки и пытаюсь настроить свою среду.
Я обычно определяю свою $JAVA_HOME
переменную, создавая файл:
/etc/profile.d/java.sh
со следующим содержанием
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
запускаться автоматически?
environment-variables
zsh
Родриго Сасаки
источник
источник
~/.profile
и размещать там переменные? Может быть,PATH
это перезаписывается в другом месте в/etc/profile.d/
.Ответы:
С моей точки зрения, лучший способ - добавить следующие строки в
~/.zshrc
файл (если у вас его еще нет, создайте его):Затем перезапустите
zsh
или просто запустите,source ~/.zshrc
и тогда ваш PATH должен быть точно таким, как вы хотите.Или, если вы хотите, чтобы изменение было общесистемным, добавьте предыдущий код в конец
/etc/zsh/zshenv
файла.Но ни в коем случае не используйте
/etc/profile.d
для автоматического запуска скриптов вzsh
. Этот каталог полезен только дляbash
оболочки,zsh
а не как в вашем случае. Чтобы понять это, откройте/etc/profile
файл, который является файлом инициализации bash и ни в коем случае не файлом инициализации zsh , и вы увидите где-то в конце файла:Таким образом, ваши скрипты из
/etc/profile.d
каталога будут автоматически запускаться,zsh
только если вы добавите предыдущий код в файл инициализации zsh, как,/etc/zsh/zprofile
например, или источник/etc/profile
в/etc/zsh/zprofile
файл.источник
~/.zprofile
может быть лучше, чем~/.zshrc
.Я считаю, что размещение всего в одном
.zshenv
файле быстро становится сложным для управления. Я рекомендую установить oh-my-sh и затем поместить различные настройки (env vars, functions) в.oh-my-sh/custom/
каталог в виде отдельных.zsh
файлов.Я также обнаружил, что этот подход работает безупречно, когда ssh'ing в машине при изменении переменных env, таких как
PATH
. Также он отлично работает вместе с vcsh для резервного копирования и синхронизации настроек.источник
~/.ssh/config
Поскольку
JAVA_HOME
он установлен, вы подтвердили, что эти сценарии создаются автоматически, не так ли?Единственное логическое объяснение - это то,
PATH
как это будет установлено позже. Первоначально он должен быть установлен PAM, который читает/etc/environment
, и, насколько я знаю, это происходит до того, как/etc/profile.d/*.sh
файлы получены. Возможно, в этом отношении zsh работает иначе, чем bash.источник
Просто столкнулся с этой проблемой локально после запуска обновлений. Похоже, корень проблемы в том, что Drush не знает, где найти легальную копию php, которая включает pdo. К счастью, он поддерживает сохранение этого пути в переменной окружения, поэтому я сделал это в командной строке:
Это решило проблему, поэтому я отредактировал .zshrc и добавил, что проблема решена.
источник
.zshrc
использовать его так же, как верхний ответ ?