我有一个“有趣”的问题,以两种不同的方式运行wine会导致:

$> wine --version
/Applications/Wine.app/Contents/Resources/bin/wine: No such file or directory

$> `which wine` --version
wine-1.8

很久以前,我在Applications有一个葡萄酒装置,但现在没有了。当前(工作)安装是通过自制程序安装的。我找不到任何环境变量扰乱我的道路或类似。
有什么建议会引起这种烦恼吗?

最佳答案

使用the bash type builtincommand -v,而不是which,来确定运行命令时shell实际执行的操作。(不要按照问题所建议的方式使用这些命令的输出来形成另一个命令;如果which的输出包含一个带有空格的目录名、一个易于扩展的glob文本或类似的内容,则问题中给出的代码将失败)。
which告诉您路径中的第一步是什么,但由于它是一个外部工具,而不是shell的一部分,因此它不知道依赖于shell状态的行为。(考虑别名、函数、散列查找等)。
如果您有一个别名,您可能会看到如下内容:

$ type wine
wine is aliased to `/Applications/Wine.app/Contents/Resources/bin/wine'
$ command -v wine
alias wine='/Applications/Wine.app/Contents/Resources/bin/wine'

…或者,对于一个函数:
$ type wine
wine is a function
wine ()
{
    /Applications/Wine.app/Contents/Resources/bin/wine "$@"
}
$ command -v wine
wine

关于macos - 执行wine!=执行`which wine`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35142310/

10-11 21:54