¿Por qué el comando "which" da resultados duplicados?

Respuestas:

9

Comprueba tu camino. No es tan difícil terminar con duplicados. Ejemplo:

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

Esto se debe a que mi / bin es un enlace simbólico a / usr / bin. Ahora:

»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 ahora está en mi $ PATH dos veces, which -aencuentra el mismo bash dos veces.

encerrada dorada
fuente
2
Para expandir: La opción -a informa TODAS las coincidencias en su RUTA. Para eso es. Si, como se señaló, su $ PATH hace referencia al mismo lugar más de una vez, o el mismo ejecutable está en más de un lugar, aparecerá varias veces con -a (pero no al omitir esa opción).
SuperMagic
2

Como dice la sugerencia, y citando la página del 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)."En cuanto a la -aopción, enumera todos los ejecutables con ese nombre que se encuentra en $ PATH.

schaiba
fuente
1

Echa un vistazo a tu camino:

echo $PATH

Hay entradas duplicadas en su ruta (o ruby ​​se instala varias veces en diferentes ubicaciones).

Alejandro
fuente
1

Tratar

whereis -b ruby

Si está obteniendo el mismo resultado, entonces el problema está en su RUTA.

TPS
fuente