【问题标题】:Executing wine != executing `which wine`执行酒!=执行`哪个酒`
【发布时间】:2016-05-10 14:23:09
【问题描述】:
我有一个“有趣”的问题,以两种方式运行 wine 会导致:
$> wine --version
/Applications/Wine.app/Contents/Resources/bin/wine: No such file or directory
$> `which wine` --version
wine-1.8
很久以前我在Applications 安装了一个葡萄酒,但现在没有了。当前(工作)安装是通过 Homebrew 安装的。我既找不到任何环境变量扰乱我的路径或类似情况。
有什么建议可能会导致这种烦恼吗?
【问题讨论】:
标签:
macos
bash
environment-variables
wine
【解决方案1】:
使用the bash type builtin 或command -v,而不是which,来确定运行命令时您的shell 将实际执行的操作。 (不要按照您的问题建议的方式使用其中任何一个的输出来形成另一个命令;如果which 的输出包含带有空间,易于扩展的全局字面量,或类似的)。
which 告诉你 PATH 中的第一个是什么,但由于它是一个外部工具而不是 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