为什么“哪个”命令给出重复的结果?


Answers:


9

检查您的路径。最终得到重复并不难。例:

»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
展开:-a选项报告PATH中的所有匹配项。这就是它的目的。如前所述,如果$ PATH多次引用同一位置,或者同一可执行文件位于多个位置,则它将用-a多次显示(但省略该选项时不会显示)。
SuperMagic 2013年

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中的名称列出了所有可执行文件。


1

看一下您的路径:

echo $PATH

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


1

尝试

whereis -b ruby

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.