Por que o comando "what" fornece resultados duplicados?


Respostas:


9

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

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

Isso ocorre 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 / usr / bin agora está no meu $ PATH duas vezes, which -aencontra o mesmo bash duas vezes.


2
Para expandir: a opção -a reporta TODAS as correspondências no seu CAMINHO. É para isso que serve. Se, como observado, seu $ PATH fizer referência ao mesmo local mais de uma vez, ou o mesmo executável estiver em mais de um local, ele será exibido várias vezes com -a (mas não ao omitir essa opção).
SuperMagic

2

Como a dica diz, 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 à -aopção, lista todos os executáveis ​​com esse nome, encontrados em $ PATH.


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).


1

Tentar

whereis -b ruby

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.