165 votes

Shell - Comment trouver le répertoire d'une commande?

Je sais que quand vous êtes sur le shell, les commandes qui peuvent être utilisées sont celles qui peuvent être trouvés sur un répertoire situé sur le CHEMIN. Même moi, je ne sais pas comment faire pour voir ce que dirs sont sur le CHEMIN de la variable (ce qui est une autre bonne question, qui pourrait être répondu), ce que j'aimerais savoir, c'est:

Je viens à shell et à écrire:

$ lshw

Je veux savoir une commande shell qui peut me dire OÙ cette commande est situé. En d'autres termes, où ce "fichier exécutable" est-il situé?

Quelque chose comme:

$ location lshw
/usr/bin

N'importe qui?

230voto

Dennis Williamson Points 105818

Si vous utilisez Bash ou zsh, utilisez ceci:

type -a lshw

Cela permettra de montrer si la cible est un builtin, une fonction, un alias ou un exécutable externe. Dans ce dernier cas, il vous montrera chaque lieu, il apparaît dans votre PATH.

bash$ type -a lshw
lshw is /usr/bin/lshw
bash$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
bash$ zsh
zsh% type -a which
which is a shell builtin
which is /usr/bin/which

En Bash, pour les fonctions de l' type -a sera également afficher la définition de la fonction. Vous pouvez utiliser declare -f functionname à faire la même chose (vous avez de l'utiliser pour zsh, depuis type -a n'en ont pas).

81voto

Comme ça:

 which lshw
 

19voto

hasenj Points 36139

PATH est une variable d'environnement, et peut être affiché avec la commande echo:

echo $PATH

C'est une liste de chemins séparés par le caractère deux points (:':'

L' which commande vous indique quel fichier est exécuté lorsque vous exécutez une commande:

which lshw

parfois, ce que vous obtenez est un chemin d'accès à un lien symbolique; si vous souhaitez suivre ce lien à l'endroit où le réel exécutable vie, vous pouvez utiliser readlink et de le nourrir à la sortie de l' which:

readlink -f $(which lshw)

L' -f paramètre indique readlink à suivre le lien de manière récursive.

Voici un exemple de ma machine:

$ which firefox
/usr/bin/firefox

$ readlink -f $(which firefox)
/usr/lib/firefox-3.6.3/firefox.sh

6voto

Jack Points 3478
~$ echo $PATH
/home/jack/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
~$ whereis lshw
lshw: /usr/bin/lshw /usr/share/man/man1/lshw.1.gz

1voto

mpez0 Points 1440

Le shell Korn, ksh , offre les fonctions intégrées whence identifiant les autres éléments intégrés au shell, macros, etc. La commande which est plus portable, toutefois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X