执行葡萄酒!=执行`哪个葡萄酒`

时间:2016-02-01 23:19:37

标签: macos bash environment-variables wine

我有一个"搞笑"以两种方式运行wine的问题导致:

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

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

很久以前我在Applications安装了葡萄酒,但现在不再了。当前(工作)安装通过Homebrew安装。我既没有发现任何环境变量弄乱了我的道路或同样。

任何可能导致这种烦恼的建议?

1 个答案:

答案 0 :(得分:4)

使用the bash type builtincommand -v而不是which来确定运行命令时shell实际执行的操作。 ( Don&#t> 使用其中任何一个的输出以您的问题建议的方式形成另一个命令;如果which的输出包含a,则问题中给出的代码将失败带有空格的目录名,容易扩展的glob文字,或者类似的。)

which告诉您PATH中的第一个内容,但由于它是外部工具而不是shell的一部分,因此它不知道依赖于shell的行为和&#0} #39; s州。 (想想别名,函数,散列查找等)。

如果您有别名,您可能会看到以下内容:

$ 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