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 中。