如何使 MacOS Catalina 的默认终端继承「前任」的环境变量配置

bash_profile.jpg

好久没有用 Nodejs 搞事情了,前两天突然一个「项目」要用到 Node 环境,但打开终端居然zsh: command not found: node了,于是便查阅了官方支持文档 HT208050:

默认情况下,您的 Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:
从 macOS Catalina Beta 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。
bash 是 macOS Mojave 及更低版本中的默认 Shell。

来源:在 Mac 上将 zsh 用作默认 Shell

因为我习惯使用手动配置环境变量的方式使用各种 libs,因此之前配置的 nodejs 环境变量不能使用一定是默认「命令行解释器」由bash变更为zsh的原因,继续阅读文档便找到了解决办法:

如果您正在使用 bash 描述文件(例如,为了设置环境变量、别名或路径变量),则您应改为使用作用与它相同的 zsh 描述文件。例如:

  • .zprofile 的作用与 .bash_profile 相同,并且在登录时运行(包括通过 SSH 运行)
  • .zshrc 的作用与 .bashrc 相同,并针对每个新的“终端”会话运行

如果您正在使用 .profile(一个兼容 POSIX 的描述文件),则您可以将以下命令添加到 .zprofile,以便 zsh 自动读取这个描述文件的设置:

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

另外,您无需进行任何修改,就可以将 bash 描述文件中的某些设置转移到 zsh 描述文件。例如,要设置环境变量,您可以使用以下命令:export MY_SETTING=1。

zsh 能够识别一组不同于 bash 所能识别的提示符指定符,并且用于指定彩色输出的语法更简洁,让您无需使用复杂的 ANSI 转义序列。例如,下面显示了 .bash_profile 中默认 bash 提示符的语法:

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

要在使用 .zprofile 或 .zshrc 时将这个 prompt 提示符转换为 zsh 提示符,请使用以下命令:

export PS1="%10F%m%f:%11F%1~%f \$ "

简单来讲,我之前配置的环境变量位于.bash_profile文件,因此仅需要在.zshrc文件中添加如下代码即可:

source ~/.bash_profile

标签: none

已有 4 条评论

  1. 好久没来,突然发现居然更新了

    1. 对啊、更新不多、删了不少~

  2. 非技术的路过。

    1. 走过路过不要错过(又是你?

评论已关闭