我只知道两种方式:alias foo=bar
和function foo() { bar }
。
我问的原因是-突然在我的bash会话之一中-我无法运行ln
命令,因为bash
出错了-bash: /usr/local/.../ln: No such file or directory
(其中/usr/local/.../
是PATH
环境变量中的条目之一)。
但这不是PATH
问题,因为如果我运行which ln
它,它会输出预期的二进制文件/usr/bin/ln
(如果我指定了绝对路径,则可以很好地运行)。
我还检查了ln
我的alias
和function
声明,没有任何内容:
$ declare -f | grep ln
$ alias | grep ln
该问题仅在一次bash会话中发生。如果我启动一个新的shell,它会再次正常工作,但是我想知道是在bash的这一特定会话中突然导致此问题的原因。
关于什么可能导致此的任何想法?
type ln
我明白了ln is hashed (/usr/local/.../ln)
这似乎是问题所在,但这到底是什么意思呢?我从未听说过bash中的该功能。