`which`、`gcc` 没有按预期运行

`which`, `gcc` not behaving as expected

我有一个几乎全新的 mac High Sierra 安装。我用自制软件安装了 gcc 4.9,现在我想确保这是默认的 gcc(不是 clang)。所以我输入了以下命令并获得了以下输出。他们对我毫无意义。 gcc -vgcc-4.9 -v 不应该有相同的输出吗?他们为什么不同?在我看来,我不明白 which 是如何工作的或符号链接是如何工作的,这让我感到惊讶,因为我以为我明白了。

$ which gcc
/usr/local/bin/gcc
$ ls -l $(which gcc)
lrwxr-xr-x  1 username  admin  22 Mar  1 09:50 /usr/local/bin/gcc -> /usr/local/bin/gcc-4.9
$ which gcc-4.9
/usr/local/bin/gcc-4.9
$ gcc-4.9 -v
Using built-in specs.
COLLECT_GCC=gcc-4.9
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc@4.9/4.9.4_1/libexec/gcc/x86_64-apple-darwin17.3.0/4.9.4/lto-wrapper
Target: x86_64-apple-darwin17.3.0
Configured with: ../configure --build=x86_64-apple-darwin17.3.0 --prefix=/usr/local/Cellar/gcc@4.9/4.9.4_1 --libdir=/usr/local/Cellar/gcc@4.9/4.9.4_1/lib/gcc/4.9 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-4.9 --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --enable-plugin --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew GCC 4.9.4_1' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues MAKEINFO=missing --disable-nls --enable-multilib
Thread model: posix
gcc version 4.9.4 (Homebrew GCC 4.9.4_1) 
$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.4.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

对于上下文,我大致遵循这些说明 https://github.com/discourse/discourse/blob/master/docs/DEVELOPMENT-OSX-NATIVE.md#os-x-development-tools 。我认为这并不重要,但出于上下文考虑,我将其包括在内。

shell 环境正在记住命令的先前位置。使用 hash -r 会使 shell 忘记它们,所以现在一切都按预期运行。

感谢 Mark Setchell 在上面的评论。