我只知道两种方法: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 会话中是什么突然导致了这个问题。
关于可能导致此问题的任何想法?
答案1
使用该命令时要小心which
。最好使用type ...
命令。
$ type ln
ln is /bin/ln
您还可以使用whereis
命令:
$ whereis ln
ln: /bin/ln /usr/share/man/man1p/ln.1p.gz /usr/share/man/man1/ln.1.gz