在搜索路径中调用二进制文件与显式调用它

时间:2011-07-18 19:15:49

标签: linux bash

首先,我不确定这个问题是否最适合SO,它也适用于超级用户。

我最近注意到一种奇怪的行为。请考虑以下事项:

$ g++ -v
g++: error trying to exec '/usr/local/bin/i686-apple-darwin10-g++-4.2.1': execvp: No such file or directory
$ which g++
/usr/local/bin/g++
$ /usr/local/bin/g++ -v
Using built-in specs.
COLLECT_GCC=/usr/local/bin/g++
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin10.7.0/4.6.0/lto-wrapper
Target: x86_64-apple-darwin10.7.0
Configured with: ../gcc-4.6.0/configure --enable-languages=fortran,c++
Thread model: posix
gcc version 4.6.0 (GCC)

这个问题不是关于错误(Mac OS上的gcc 4.6必然会引起麻烦),而是我觉得某些东西与搜索路径的工作原理模型不匹配。有人可以向我解释这种行为吗?

1 个答案:

答案 0 :(得分:2)

一个可能的解释是g ++的别名:

x@y:~$alias g++="/usr/bin/doesnotexist"
x@y:~$g++
-bash: /usr/bin/doesnotexist: No such file or directory
x@y:~$which g++
/usr/bin/g++
x@y:~$/usr/bin/g++
i686-apple-darwin10-g++-4.2.1: no input files

所以我先检查别名(只需输入“alias”,不带任何参数)。