No use which
, use type
. El comando which
en el shell predeterminado (bash) es una utilidad externa que no conoce los alias y las funciones. Por otro lado, type
es una utilidad interna que le dirá si su argumento es un alias, una función, una utilidad incorporada o un comando externo.
El comando which
se menciona en los tutoriales y manuales solo por razones históricas: hace 30 años, el comando type
no existía en todas partes, y algunas personas han tardado en adaptarse.
Para obtener más detalles, incluida una discusión sobre shells históricos y actuales, consulte ¿Por qué no usar" cuales "? ¿Qué usar entonces?
$ type cp
cp is aliased to 'cp -i'
$ type mkcd
mkcd is a function
mkcd ()
{
…
}
$ type type
type is a shell builtin
$ type cat
cat is /bin/cat
En zsh, está bien usar which
: zsh tiene type
y which
como comandos integrados.
También tenga en cuenta que si acaba de instalar o eliminar un programa, es posible que el shell haya memorizado su ubicación anterior. Por ejemplo, si acaba de instalar su propia versión de un programa en un directorio que está por delante de los directorios del sistema en $PATH
, el shell puede seguir invocando el programa que viene con el sistema. Esto es solo un problema en shells que ya se estaban ejecutando en el momento de la instalación o desinstalación. Para actualizar la memoria del shell con los datos actuales, ejecute el comando hash -r
o hash COMMANDNAME
.