Por que o comando “which” fornece resultados duplicados?

8

which -a ruby me dá

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

Dá o mesmo caminho três vezes. Por que isso acontece?

    
por Aswini 06.03.2013 / 14:32

4 respostas

9

Verifique seu caminho. Não é tão difícil acabar com duplicatas nele. Exemplo:

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

Isso porque meu / bin é um link simbólico para / usr / bin. Agora:

»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

Como o / usr / bin agora está no meu $ PATH duas vezes, which -a encontra o mesmo bash duas vezes.

    
por 06.03.2013 / 15:24
2

Como diz a dica, e citando a partir da página de manual, "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)." Quanto à opção -a , ela lista todos os executáveis com o nome encontrado em $ PATH.

    
por 06.03.2013 / 14:38
1

Dê uma olhada no seu caminho:

echo $PATH

Existem entradas duplicadas no seu caminho (ou o ruby é instalado várias vezes em locais diferentes).

    
por 06.03.2013 / 15:33
1

Tente

whereis -b ruby

Se você está obtendo a mesma saída, então o problema está no seu PATH.

    
por 06.03.2013 / 15:42