为什么“which”命令会给出重复的结果?

为什么“which”命令会给出重复的结果?

which -a ruby给我

/usr/ruby
/usr/ruby
/usr/ruby

它给出了相同的路径三​​次。为什么会出现这种情况?

答案1

检查你的路径。最终得到重复的内容并不难。例子:

»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:
»which -a bash
/bin/bash
/usr/bin/bash

这是因为我的 /bin 是 /usr/bin 的符号链接。现在:

»export PATH=$PATH:/usr/bin
»echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/bin
»which -a bash
/bin/bash
/usr/bin/bash
/usr/bin/bash

由于 /usr/bin 现在在我的 $PATH 中两次,因此which -a找到相同的 bash 两次。

答案2

正如提示所说,并引用手册页,"Which takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been executed when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories listed in the environment variable PATH using the same algorithm as bash(1)."至于该-a选项,它列出了在 $PATH 中找到的该名称的所有可执行文件。

答案3

看看你的路径:

echo $PATH

您的路径中有重复的条目(或者 ruby​​ 在不同位置安装了多次)。

答案4

尝试

whereis -b ruby

如果您得到相同的输出,则问题出在您的 PATH 中。

相关内容