首页 > 解决方案 > “gcc 已散列(/bin/gcc)”是什么意思?

问题描述

我已经在debian中预装了一个gcc,我也成功编译了另一个gcc,安装在/root/tools/.但之后,我输入type gcc了,它显示gcc is hashed (/bin/gcc). 这是什么意思 ?

我的 bashPATH变量:PATH=/root/tools/bin:/bin:/usr/bin

标签: linuxgcc

解决方案


hashed 意味着 shell 知道它在哪里。当您像gcc第一次一样运行命令时,shell 会在路径中找到它。第二次,shell 没有去寻找它,因为 shell 已经记住了它在哪里。这称为散列,可能是因为它在内部使用散列表。

如果您希望 shell 忘记其记住的位置,请使用命令rehash。如果你在某个地方安装了一个新程序,但 shell 找不到它,这很有用,因为它记住了它的旧位置。

编辑添加:您还可以使用hash -l查看外壳已散列的内容。

$ hash -l
builtin hash -p /usr/bin/git git
builtin hash -p /home/alester/bin/dirtysmoke dirtysmoke
builtin hash -p /usr/bin/chmod chmod
builtin hash -p /usr/local/bin/exa exa
builtin hash -p /usr/bin/ssh-add ssh-add
builtin hash -p /usr/bin/mkdir mkdir
builtin hash -p /usr/bin/man man

推荐阅读