Почему команда «which» дает повторяющиеся результаты?

which -a ruby дает мне

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

Он дает один и тот же путь три раза. Почему это происходит?

    Проверьте свой путь. В этом нет ничего сложного в том, чтобы дублировать. Пример:

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

    Это связано с тем, что my / 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 дважды.

    Как говорится в подсказке, и цитируя на странице руководства "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.

    Взгляните на свой путь:

     echo $PATH 

    На вашем пути есть повторяющиеся записи (или рубин устанавливается несколько раз в разных местах).

    Пытаться

    whereis -b ruby

    Если вы получаете одинаковый результат, проблема в вашей PATH.