好久没有用 Nodejs 搞事情了,前两天突然一个「项目」要用到 Node 环境,但打开终端居然zsh: command not found: node
了,于是便查阅了官方支持文档 HT208050:
默认情况下,您的 Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:
从 macOS Catalina Beta 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。
bash 是 macOS Mojave 及更低版本中的默认 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
版权属于:香菇
本文链接:https://blog.siitake.cn/macos-bash-profile-for-zsh.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
好久没来,突然发现居然更新了
对啊、更新不多、删了不少~
非技术的路过。
走过路过不要错过(又是你?