Pourquoi la commande «quel» donne-t-elle des résultats en double?

Réponses:

9

Vérifiez votre chemin. Ce n'est pas si difficile de se retrouver avec des doublons. Exemple:

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

C'est parce que mon / bin est un lien symbolique vers / usr / bin. Maintenant:

»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

Puisque / usr / bin est maintenant dans mon $ PATH deux fois, which -atrouve le même bash deux fois.

boucle d'or
la source
2
Pour développer: L'option -a signale TOUTES les correspondances dans votre CHEMIN. C'est pour ça. Si, comme indiqué, votre $ PATH fait référence au même endroit plus d'une fois, ou si le même exécutable se trouve à plusieurs endroits, il apparaîtra plusieurs fois avec -a (mais pas en omettant cette option).
SuperMagic
2

Comme l'indique l'indication, et en citant la page de manuel, "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)."quant à l' -aoption, elle répertorie tous les exécutables de ce nom trouvés dans $ PATH.

Schaiba
la source
1

Jetez un œil à votre chemin:

echo $PATH

Il y a des entrées en double sur votre chemin (ou ruby ​​est installé plusieurs fois à différents endroits).

Alexandre
la source
1

Essayer

whereis -b ruby

Si vous obtenez la même sortie, le problème est dans votre PATH.

TPS
la source