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

i3w*_*gyi 13 zsh

每次打开终端时,我都必须获取.bash_profile来启用$ JAVA_HOME或其他变量。

Zac*_*ack 57

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

我最终这样做了:

 echo source ~/.bash_profile > ~/.zshenv && source ~/.zshenv
Run Code Online (Sandbox Code Playgroud)

让 zsh 源我原来的 .bash_profile。

  • 使用如下命令确保在用户主目录中创建该文件:`echo source ~/.bash_profile > ~/.zshenv` (12认同)
  • @QASam,echo 在这里是必须的,`X > Y` 只传递 X 输出的内容。如果没有 echo,则不会输出任何内容。 (3认同)

Ale*_*ura 14

是的,它叫做~/.zshenv

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

export JAVA_HOME="$(/usr/libexec/java_home)"
Run Code Online (Sandbox Code Playgroud)

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

注意

在尝试确定应该将哪些zsh启动文件放入文件中以咨询zsh启动文件时,我经常发现它很有用。

  • 实际上,`.zprofile` 的含义更接近于 `.bash_profile`,因为两者都仅由各自的 shell 获取用于登录 shell。`.zshenv` 为 `zsh` 的*所有* 实例执行,无论它们是否是登录 shell。 (31认同)
  • @chepner `.zshenv` 是应该定义所有环境变量的地方。见[这里](http://zsh.sourceforge.net/Intro/intro_3.html) (6认同)
  • 同意;`.bash_profile` 必须为`bash` 做`.zshenv` 和`.zprofile/.zlogin` 一起为`zsh` 做的事情。该链接提供了关于应该去哪里的很好的信息。 (4认同)
  • 但它不在当前的手册页中。请注意,您的链接上次更新是在 1995 年。 (2认同)

Ani*_*bey 13

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

(1) .zshenv --> 这始终是首先获取的,但可以被其他内容覆盖

(2).zprofile--> 这对于有 ksh 经验的用户来说是等效的

(3).zshrc --> 这适用于 zsh 的所有交互式定制

(4).zlogin --> 这在前三个完成后执行

(5).zlogout--> 当我们注销 zsh shell 时执行,建议将您的内容放入 .zshenv 或 .zshrc 中

拥有这些文件中的任何一个都不是强制性的。但如果存在,则将从上述顺序获取并执行。


小智 8

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

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

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

添加 .bash_profile


小智 6

最近升级到macOS Catalina,默认shell改成了zsh,~/.zshrc作为资源文件。

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

  1. ~/.bash_profile运行打开vim ~/.bash_profile
  2. ~/.zshrc运行打开vim ~/.zshrc
  3. 将内容复制~/.bash_profile~/.zshrc

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

  • 您还可以在 ~/.zshrc 末尾添加 `source ~/.bash_profile`。 (6认同)

Hic*_*cup 6

在 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
Run Code Online (Sandbox Code Playgroud)

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

touch ~/.zprofile.
Run Code Online (Sandbox Code Playgroud)