Non usare which
, usa type
. Il comando which
nella shell predefinita (bash) è un'utilità esterna che non conosce alias e funzioni. D'altra parte, type
è un'utilità interna che ti dirà se il suo argomento è un alias, una funzione, un'utilità incorporata o un comando esterno.
Il comando which
è menzionato in tutorial e manuali solo per ragioni storiche - 30 anni fa il comando type
non esisteva ovunque e alcune persone sono state lente ad adattarsi.
Per maggiori dettagli, inclusa una discussione sulle shell storiche e attuali, vedi Perché non usare" quale "? Cosa usare allora?
$ 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
In zsh, è ok usare which
: zsh ha sia type
che which
come comandi incorporati.
Nota anche che se hai appena installato o rimosso un programma, la shell potrebbe aver memorizzato la sua vecchia posizione. Ad esempio, se hai appena installato la tua versione di un programma in una directory che è più avanti delle directory di sistema in $PATH
, la shell potrebbe continuare a richiamare il programma fornito con il sistema. Questo è solo un problema nelle shell che erano già in esecuzione al momento dell'installazione o della rimozione. Per aggiornare la memoria della shell con i dati correnti, esegui il comando hash -r
o hash COMMANDNAME
.