La commande à utiliser varie d'un shell à l'autre.
Seul un shell intégré vous dira correctement ce que le shell fera pour un nom de commande donné, car seuls les intégrés peuvent connaître pleinement les alias, les fonctions du shell, les autres intégrés, etc. N'oubliez pas :toutes les commandes ne correspondent pas à des fichiers exécutables.
-
Pour le shell Bourne Again,
bash, l'intégré est letypecommande :$ type '[' [ is a shell builtin -
Pour la coquille de poisson,
fish, Letypebuiltin fonctionne de la même manière que bash. Pour obtenir uniquement le chemin d'accès à un exécutable, utilisezcommand -v:$ type cat cat is /bin/cat $ command -v cat /bin/cat -
Pour le Korn Shell,
ksh, l'intégré est lewhencecommande — avectypeinitialement configuré comme un alias ordinaire pourwhence -vet lecommandintégré avec le-voption équivalente àwhence:$ whence -v ls ls is a tracked alias for /bin/ls -
Pour la coque Z,
zsh, l'intégré est lewhencecommande, avec lecommandintégré avec le-voption équivalente àwhenceet les éléments intégréstype,which, etwhereéquivalent àwhenceavec les options-v,-c, et-carespectivement.$ whence ls /bin/ls -
Pour le T C Shell,
tcsh, l'intégré est lewhichcommand — à ne pas confondre avec une commande externe portant ce nom :> which ls ls: aliased to ls-F > which \ls /bin/ls
Autres lectures
- https://unix.stackexchange.com/questions/85249/
Vous pouvez utiliser which pour cela :
[email protected]:~$ which ls
/bin/ls
Cela fonctionne en recherchant le PATH pour les fichiers exécutables correspondant aux noms des arguments. Notez que cela ne fonctionne pas avec les alias du shell :
[email protected]:~$ alias listdir=/bin/ls
[email protected]:~$ listdir /
bin dev initrd.img lib32 media proc selinux tmp vmlinuz
...
[email protected]:~$ which listdir
[email protected]:~$
type , cependant, fonctionne :
[email protected]:~$ type listdir
listdir is aliased to `/bin/ls'
which n'est pas (nécessairement) renvoie le fichier exécutable. Il renvoie le premier fichier correspondant nom il trouve dans le $PATH (ou plusieurs fichiers nommés similaires lors de l'utilisation de which -a )... Le réel exécutable peut être plusieurs liens.
which locate
/usr/bin/locate
`file $(which locate)
/usr/bin/locate: symbolic link to /etc/alternatives/locate'
La commande qui trouve le réel l'exécutable est readlink -e ,
(en conjonction avec which )
readlink -e $(which locate)
/usr/bin/mlocate
Pour voir tous les liens intermédiaires :
f="$(which locate)" # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do # follow links to executable
printf "# %s\n" "$f"
done
# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate