我在 OSX 上并安装了 Homebrew 来获取 GNU coreutils。我想gsort
使用而不是预安装的sort
命令,所以我创建了一个符号链接到gsort
.我有限的经验告诉我,sort
从 CL 或在脚本中运行将使用gsort
,但事实并非如此:
$ which gsort; which sort
/usr/local/bin/gsort
/usr/local/bin/sort
$ ll /usr/local/bin/ | fgrep sort
1083450 lrwxr-xr-x 1 alex admin - 34B Mar 23 15:56:52 2016 gsort@ -> ../Cellar/coreutils/8.25/bin/gsort
1083466 lrwxr-xr-x 1 alex admin - 35B Mar 23 15:56:52 2016 gtsort@ -> ../Cellar/coreutils/8.25/bin/gtsort
1088327 lrwxr-xr-x 1 alex admin - 34B Mar 23 16:57:41 2016 sort@ -> ../Cellar/coreutils/8.25/bin/gsort
$ echo ${PATH}
/usr/local/opt/gnu-sed/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
$ gsort --version | fgrep GNU
sort (GNU coreutils) 8.25
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
$ /usr/local/bin/sort --version | fgrep GNU
sort (GNU coreutils) 8.25
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
$ sort --version | fgrep GNU
sort (GNU coreutils) 5.93
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
gsort
请注意,当检查和的版本时sort
(当使用符号链接的绝对路径时),它正确显示了较新的 coreutils 版本,但仅运行sort
仍然给我旧的预安装版本。谁能告诉我为什么?
答案1
sort
如果您在安装符号链接之前在同一 shell 会话中启动,bash
则已缓存路径搜索结果。用于type sort
检查是否应答sort is hashed (/usr/bin/sort)
。