Mac OS 10.13.6 全局安装yarn后bash提示yarn: command not found
问题根因
先厘清两个最容易踩的认知误区:
- 你提到的/Users/useName/.config/yarn,是yarn存放全局包缓存、用户级配置的目录,完全不存放yarn命令的可执行软链接,就算把这个目录加到系统PATH里,也根本找不到yarn命令。
- 刚安装完yarn时临时终端能正常运行命令,是因为npm执行全局安装操作时,会在当前shell会话中临时追加全局bin目录的PATH配置,这个配置只在当前未关闭的会话里生效,不会持久化到系统的shell启动文件中。一旦关闭当前终端会话,临时PATH就会被系统重置,所以重开终端就会提示
bash: yarn: command not found。之前能正常跑通yarn create react-app,本质是因为这个命令刚好在安装完成的同一个临时会话里执行,没有跨会话。
分步解决操作
- 定位yarn可执行文件的真实目录
执行命令npm config get prefix,得到的输出路径就是npm全局安装的根目录,yarn的可执行软链接默认就放在这个根目录下的bin子文件夹中。比如执行命令后输出路径为/Users/useName/.npm-global,对应的可执行文件目录就是/Users/useName/.npm-global/bin。 - 持久化配置PATH环境变量
Mac OS 10.13.6默认使用bash作为终端shell,需要编辑两个核心启动配置文件,避免因终端启动加载顺序差异导致配置不生效:- 执行
nano ~/.bash_profile打开配置文件,在文件末尾追加行:export PATH="$PATH:上一步查到的bin目录路径" - 按Ctrl+O保存、回车确认、Ctrl+X退出编辑器
- 用相同操作编辑~/.bashrc文件,追加完全一致的PATH配置
- 执行
- 加载配置验证效果
执行命令source ~/.bash_profile && source ~/.bashrc让当前终端加载新的环境变量,之后执行yarn -v如果能正常输出版本号,就代表配置成功,后续哪怕关闭重开终端,也能正常识别所有yarn命令。
注意:全程不要把/Users/useName/.config/yarn这个缓存配置目录加到PATH中,该目录下没有任何可执行文件,就算配置了也解决不了命令找不到的问题。
内容的提问来源于stack exchange,提问作者vikramvi
相关产品推荐
相关产品推荐

