执行任何终端命令时出现“No such file or directory”(由 VMware Fusion 引起)

Getting `No such file or directory` when executing any terminal command (caused by VMware Fusion)

我正在使用 macOS High Sierra,但在尝试安装脚本时出现以下错误:

 sh: Fusion.app/Contents/Public:/Users/<name>/.rvm/bin: No such file or directory

显然与 rvmFusion.app 有关,我没有那个应用程序,我有的是 VMWare Fusion.app.

VMWare 更改了您的 $PATH 变量,但它不会在 .profile/etc/profile 中执行,无论是全局变量还是局部变量 bashrczshrc文件。

里面有自己的文件/etc/paths.d。该文件名为 com.vmware.fusion.public.

需要 sudo 权限来更改文件:

$ sudo vim /etc/paths.d/com.vmware.fusion.public

文件是 readonly,它的内容是:

/Applications/VMware Fusion.app/Contents/Public

注意 周围没有 引号,并且 space 字符 没有转义。您需要在 VMWare 之后和白色 space.

之前添加一个 \

最终结果:

/Applications/VMware\ Fusion.app/Contents/Public

:x! 退出 vim

打开一个新终端window并再次运行你的命令,你应该不会再有那个错误了。

使用 VMware Fusion 在启动时重写 /etc/paths.d/com.vmware.fusion.public

将此 PATH 查找和替换行添加到我的 .bash_profile 似乎有效:

export PATH=${PATH//VMware\ F/VMware\ F}

发生这种情况是因为某些 shell 脚本(在本例中可能是 rvm)没有遵循最佳实践,特别是:

Double quote to prevent globbing and word splitting https://github.com/koalaman/shellcheck/wiki/SC2086

按照其他答案中的建议更改 /etc/paths.d/com.vmware.fusion.public 可能会破坏此变量用双引号引起来的所有其他地方。