Zsh中有什么东西,例如.bash_profile?


83

每次打开终端时,我都必须提供源代码.bash_profile以启用$JAVA_HOME或其他变量。


1
是的,它是否在每次打开终端时自动获得?
i3wangyi 2014年

Answers:


104

是的,它叫做~/.zshenv

这是我$JAVA_HOME设定的方式~/.zshenv

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

但是请记住,zsh不是bash,因此仅因为您.bash_profile每次打开终端时都必须提供源代码并不意味着您必须使用zsh进行操作。使用zsh时,我只需要~/.zshenv 在对其进行更改时就重新获得我的资源,然后仅对于已经打开的终端即可:新的终端应该已经获得了我的new和改进的资源~/.zshenv

注意

在尝试确定应该使用哪些zsh启动文件时,我应该经常使用它来查阅zsh启动文件


17
实际上,它们的.zprofile含义更接近.bash_profile,因为两者仅由各自的登录shell的shell来提供。.zshenv对的所有实例都执行zsh,无论它们是否是登录shell。
chepner 2014年

6
@chepner.zshenv是应在其中定义所有环境变量的位置。看到这里
Alexej Magura 2014年

3
同意;.bash_profile必须做bash什么.zshenv.zprofile/.zlogin一起做什么zsh。该链接提供了应该去哪里的好信息。
chepner 2014年

31

我知道这是一个老问题,但是最近我将MacO升级到Catalina,这将默认shell从bash更改为zsh。

我最终这样做:

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

要让zsh源我的原始.bash_profile。


11
使用如下命令确保在用户主目录中创建了该文件:echo source ~/.bash_profile > ~/.zshenv
Smair

是利用echo重要吗?那是做什么的?
质量检查萨姆

3
@QASam,这里回显是必须的, X > Y只能通过X输出。没有回声,则不会输出任何内容。
James LoveLady

3

最近从Mac升级到Catalina OS,默认情况下更改为运行Z外壳,该外壳使用zshrc文件作为Z外壳资源,我们通常在用户主目录中包含bash_profile,解决方案是

  1. 通过打开> vim〜/ .bash_profile从bash_profile复制内容
  2. 通过> vim〜/ .zshrc创建zshrc
  3. 将bash_profile内容复制到zsrc中

打开一个新的终端窗口并运行以前的别名的/脚本应该可以正常工作


2

继续使用.bash_profile的其他简单替代方法是将此文件添加到.zshrc文件中:

  1. 打开您的.zhsrc文件> vim〜/ .zshrc
  2. 将此行添加到您的.zshrc文件>源〜/ .bash_profile

通过这种简单的解决方案,如果您喜欢zhs,则可以继续添加.bash_prifile。

添加.bash_profile


bash和zsh之间可能会导致bash_profile无法正常启动吗?参见zsh.sourceforge.net/FAQ/zshfaq02.html#l14
framontb

0

在Mac Catalina中,终端使用zsh。除了拥有.bash_profile之外,最好拥有.zshenv并在此处编写脚本。

下次每次打开终端时,.zshenv中的脚本都会执行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.