mac 下 zsh: command not found

简单来说,是我使用 tnpm install -g webpack 或者任何使用 -g 来安装的全局 npm 包都报错: zsh: command not found,

想到了肯定是环境变量引起的,zsh 找不到全局包安装的位置。

zsh 的配置文件在 ~/.zshrc 文件中,里面已经有被配置了的环境变量如:

1
2
3
export $PATH = /usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

// 或者你可以直接在终端工具中 echo $PATH 查看暴露的全局环境变量

发现问题后,找到了 npm -g 安装的全部目录为(…为自己的目录) /usr/local/bin/node/.../bin 下, 添加到 $PATH 后面即可。

每个 : 代表的是多个环境变量的分割。

过程中做了一件特别傻的事情,没有把 npm 的目录直接在原来的 export 后面加,而是直接新建了一行,大概是下面这样:

1
2
3
4
5
6
7
8
9
export PATH = /usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PATH = /usr/local/bin/node/.../bin

zsh 启动会报错:
/Users/sevencai/.oh-my-zsh/oh-my-zsh.sh:3: command not found: env
env_default:1: command not found: env
env_default:1: command not found: grep
env_default:1: command not found: env
env_default:1: command not found: grep

这样会导致最后的环境变量是后面一项,前面被覆盖了。导致一些最基本的命令,如 cat/vi/vim 都不能使用了。哈哈,连vi都不能用了,我知道错了,怎么改回来?

直接在命令行中export PATH=/bin:/usr/bin:/usr/local/bin, 然后再去 vi ~/.zshrc 更改就好了。

zshrc 是 zsh 的配置文件,如果你不是用的 zsh, 而是 bash 或者 shell , 配置文件就不是这个了,有可能是 .bash_profile 之类的。

记得每次 modify …rc 文件后都 source 下哦, 要不不会生效。

上面或者直接使用:

1
2
export PATH = /usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PATH = $PATH:/usr/local/bin/node/.../bin

即在路径前或路径后添加 $PATH 变量,也可。