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


94

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


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 запускаются.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.