Zsh 中有类似于. bash _ profile 的内容吗?

每次我打开终端,我必须源 .bash_profile启用 $JAVA_HOME或其他变量。

159930 次浏览

是的,它叫 ~/.zshenv

下面是我如何在 ~/.zshenv中设置 $JAVA_HOME:

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

但是请记住,zsh 是 没有 bash,因此每次打开终端时都必须为 .bash_profile提供源代码,所以 没有意味着必须使用 zsh。使用 zsh,我只需要重新采购我的 ~/.zshenv 当我修改它的时候,然后是 只适用于已经打开的终端: 新的终端应该已经采购了我的新的和改进的 ~/.zshenv

注意

在尝试确定应该将哪些 zsh 启动文件放入到 Zsh 启动文件中时,我经常发现它很有帮助。

启动文件的文档的更新版本可以在 给你中找到。

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

最后我做了这个:

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

让 zsh 来源于我原来的. bash _ profile。

最近,在升级到 macOS Catalina 之后,默认 shell 改为 zsh,它使用 ~/.zshrc作为资源文件。

我们通常在用户主目录中使用 ~/.bash_profile的解决方案是简单的

  1. 通过运行 vim ~/.bash_profile打开 ~/.bash_profile
  2. 通过运行 vim ~/.zshrc打开 ~/.zshrc
  3. ~/.bash_profile的内容复制到 ~/.zshrc

打开一个新的终端窗口并运行以前的别名/脚本,这应该可以完美地工作。

继续使用.bash _ profile 的另一个简单替代方法是将这个文件添加到. zhrc 文件中:

  1. 打开.zhsrc 文件 > vim ~/. zhrc
  2. 将这一行添加到. zhrc 文件 > source ~/. bash _ profile

使用这个简单的解决方案,如果您喜欢 zhs,可以继续添加.bash _ profile。

添加. bash _ profile

在 Mac Catalina 中,终端使用 zsh. 而不使用. bash _ profile,最好使用. zshenv 并在那里编写脚本。

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

我遇到了这个问题,我跟随 Zack 和 Luke Schoen 的回答,但是我的 $PATH看起来和我在 Bash中看到的不一样。

这篇文章解释了不同配置文件的作用: Https://unix.stackexchange.com/questions/71253/what-should-shouldnt-go-in-zshenv-zshrc-zlogin-zprofile-zlogout

我发现将我的 .bash_profile路径导出分割成 .zprofile和我的别名分割成 .zshrc对我想要的效果最好。

我发现了为什么 Zack 和 Luke Schoen 的回答对我不起作用:

我在 .zshenv中列出的路径导出首先执行,然后执行 /usr/libexec/path_helper, 它在 /etc/paths中列出的路径之前。

我找到了 /etc/zprofile位置下的配置文件。这将是 zsh

在 Mac Catalina 和 osx 版本中,终端使用 zsh,有一个系统范围的配置文件/etc/zprofile。

Cat/etc/zprofile

# System-wide profile for interactive zsh(1) login shells.


# Setup user specific overrides for this in ~/.zprofile. See zshbuiltins(1)
# and zshoptions(1) for more details.


if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi

它说,如果你想覆盖,然后创建 ~/. zprofile。

touch ~/.zprofile.

当我们启动 zsh shell 或关闭它时,会执行五个独立的概要文件脚本(按照下面给出的顺序)。

(1) .zshenv -> 这总是首先被源代码提供,但是可以被其他代码覆盖

(2).zprofile—— > 这对于来自 ksh 经验的用户来说是等价的

这适用于 zsh 的所有交互式定制

在前三个完成之后执行

这是在我们注销 zsh shell 时执行的 最好把你的东西放在.zshenv 或者.zhrc 中

拥有这些文件中的任何一个都不是 强制性的。但是如果它在那里,它将从上面的顺序来源和执行。

更新: macOS Monterey 12.4

是的-对于 Zsh,它是文件: .zshrc 加上你的参数。