执行任何终端命令时出现“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
显然与 rvm
或 Fusion.app
有关,我没有那个应用程序,我有的是 VMWare Fusion.app
.
VMWare 更改了您的 $PATH
变量,但它不会在 .profile
或 /etc/profile
中执行,无论是全局变量还是局部变量 bashrc
或 zshrc
文件。
里面有自己的文件/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
可能会破坏此变量用双引号引起来的所有其他地方。
我正在使用 macOS High Sierra,但在尝试安装脚本时出现以下错误:
sh: Fusion.app/Contents/Public:/Users/<name>/.rvm/bin: No such file or directory
显然与 rvm
或 Fusion.app
有关,我没有那个应用程序,我有的是 VMWare Fusion.app
.
VMWare 更改了您的 $PATH
变量,但它不会在 .profile
或 /etc/profile
中执行,无论是全局变量还是局部变量 bashrc
或 zshrc
文件。
里面有自己的文件/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
可能会破坏此变量用双引号引起来的所有其他地方。