Чи є в Zsh щось на зразок .bash_profile?


94

Кожного разу, коли я відкриваю термінал, мені доводиться шукати джерело, .bash_profileщоб увімкнути $JAVA_HOMEабо інші змінні.


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

Відповіді:


119

Так, це називається ~/.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 Проблема з визначенням PATHв .zshenvтому, що це пізніше може бути замінено, скажімо /etc/profile; див. змінну PATH у .zshenv або .zshrc .
legends2k

38

Я знаю, що це старе питання, але нещодавно я оновив MacO до Catalina, який змінив оболонку за замовчуванням з bash на zsh.

У підсумку я зробив це:

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

Щоб мати zsh вихідний файл .bash_profile.


11
Використовуйте таку команду, щоб переконатися, що файл створений у домашньому каталозі користувачів:echo source ~/.bash_profile > ~/.zshenv
Smair

Чи echoважливо тут використання? Що це робить?
awesame

3
@QASam, ехо тут є обов'язковим, X > Yпередайте лише те, що видав X. Без відлуння нічого не виводиться.
James LoveLady

3

Нещодавно, з оновленням до ОС Catalina з 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> джерело ~ / .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.