Есть ли в Zsh что-нибудь вроде .bash_profile?

94

Каждый раз, когда я открываю терминал, мне нужно указать источник .bash_profileдля включения тех $JAVA_HOMEили иных переменных.

i3wangyi
источник
1
да, он автоматически загружается каждый раз при открытии терминала?
i3wangyi

Ответы:

117

Да, это называется ~/.zshenv.

Вот как я $JAVA_HOMEустроился ~/.zshenv:

export JAVA_HOME="$(/usr/libexec/java_home)"

Однако имейте в виду, что zsh - это не bash, поэтому то, что вам нужно исходить .bash_profileкаждый раз, когда вы открываете терминал, не означает, что вы должны делать это с помощью zsh. С zsh мне нужно повторно исходить только ~/.zshenv тогда, когда я вношу в него изменения , и то только для терминалов, которые уже открыты : новые терминалы должны были уже получить мои новые и улучшенные ~/.zshenv.

ЗАМЕТКА

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

Алексей Магура
источник
17
Фактически, .zprofileэто ближе по смыслу к тому .bash_profile, что оба они исходят только от своих соответствующих оболочек для оболочек входа. .zshenvвыполняется для всех экземпляров zsh, независимо от того, являются они оболочками входа или нет.
chepner
6
@chepner .zshenv- это место, где должны быть определены все переменные среды. Смотрите здесь
Алексей Магура
3
Согласовано; .bash_profileдолжен делать для bashчего .zshenvи .zprofile/.zloginвместе делать для zsh. Эта ссылка дает хорошую информацию о том, что и куда нужно делать.
chepner
@Alexej Проблема с определением PATHin .zshenvзаключается в том, что позже его можно будет переопределить, скажем, с помощью /etc/profile; см. переменную PATH в .zshenv или .zshrc .
legends2k
38

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

В итоге я сделал это:

 echo source ~/.bash_profile > ~/.zshenv && source ~/.zshenv

Чтобы получить исходный код zsh, мой исходный .bash_profile.

Зак
источник
11
Используйте echo source ~/.bash_profile > ~/.zshenv
следующую
echoЗдесь важно использование ? Что это значит?
awesame
3
@QASam, здесь обязательно нужно эхо, X > Yпередавать только то, что выводит X. Без эха ничего не выводится.
Джеймс ЛавЛеди
3

Недавно с обновлением до Catalina OS с Mac, по умолчанию он изменяется для запуска Z-оболочки, которая использует файл zshrc в качестве ресурса Z-оболочки, у нас обычно был bash_profile внутри домашнего каталога пользователя, решение состоит в том, чтобы просто

  1. скопируйте содержимое из bash_profile, открыв> vim ~ / .bash_profile
  2. создать zshrc с помощью> vim ~ / .zshrc
  3. скопировать содержимое bash_profile в zsrc

Откройте новое окно терминала и запустите свой предыдущий псевдоним / скрипт должен работать безупречно.

Правин
источник
3

Другой простой альтернативой продолжению использования вашего .bash_profile является добавление этого файла в ваш .zshrc файл:

  1. Откройте ваш .zhsrc файл> vim ~ / .zshrc
  2. Добавьте эту строку в свой файл .zshrc> source ~ / .bash_profile

с помощью этого простого решения вы можете продолжить добавление вашего .bash_prifile, если вам нравится zhs.

Добавление .bash_profile

бэкдорман
источник
Могут ли быть некоторые различия между bash и zsh, из-за которых bash_profile не запускается должным образом? см. zsh.sourceforge.net/FAQ/zshfaq02.html#l14
framontb
0

В Mac Catalina терминал использует zsh. Вместо .bash_profile лучше иметь .zshenv и писать там свой скрипт.

Когда вы каждый раз открываете терминал, скрипты внутри .zshenv запускаются.

Раджив Джаясвал
источник