macOS High Sierra执行终端命令/安装脚本报No such file or directory(VMware Fusion相关)
sh: Fusion.app/Contents/Public:/Users/<name>/.rvm/bin: No such file or directory 这个问题我之前帮不少用户排查过,核心原因是你的PATH环境变量配置出了格式错误,而且路径本身也写错了——你实际安装的是VMware Fusion.app,但配置里写的是Fusion.app,还把它和rvm的路径错误地连在了一起,导致shell找不到这个无效路径。咱们一步步来解决:
第一步:确认问题根源
先在终端执行这条命令,查看当前的PATH配置:
echo $PATH
你应该会看到类似...Fusion.app/Contents/Public:/Users/<name>/.rvm/bin...的内容——这两个路径没有被正确识别,因为Fusion.app是相对路径(shell不知道它在哪),而且它和rvm路径的拼接也有问题(本质是PATH里的条目格式错误)。
第二步:找到PATH配置的文件
macOS的shell环境变量通常存在这些文件里,你需要逐个检查:
~/.bash_profile(High Sierra默认bash的主配置文件)~/.bashrc~/.zshrc(如果你切换到了zsh)~/.profile- 还有rvm自动生成的配置:
~/.rvm/scripts/rvm
重点看有没有类似这样的错误行:
export PATH="Fusion.app/Contents/Public:/Users/<name>/.rvm/bin:$PATH"
大概率是VMware Fusion安装时自动添加的错误路径(它应该用完整的绝对路径)。
第三步:修正PATH配置
把错误的路径改成完整的绝对路径,或者如果不需要这个VMware的路径就直接删掉。正确的格式应该是这样的(以保留VMware路径为例):
export PATH="/Applications/VMware Fusion.app/Contents/Public:/Users/<name>/.rvm/bin:$PATH"
注意:
- 每个路径之间用冒号
:分隔,不要连在一起 - 必须用绝对路径(从
/开头),不要用相对路径Fusion.app
第四步:刷新配置并验证
保存修改的文件后,在终端执行这条命令刷新配置(以.bash_profile为例,如果你改的是其他文件就替换成对应文件名):
source ~/.bash_profile
然后再执行echo $PATH,确认里面的路径已经变成正确的/Applications/VMware Fusion.app/Contents/Public,且和rvm路径正确分隔。
第五步:测试解决效果
随便执行一个终端命令(比如ls、ruby -v)或者之前出错的安装脚本,看看那个No such file or directory的错误是否消失。
如果还是有问题,可以检查是不是有其他脚本(比如VMware的启动脚本)在偷偷修改PATH,你可以在终端执行printenv查看所有环境变量,进一步排查。
内容的提问来源于stack exchange,提问作者gabidavila

