Je sais que lorsque vous êtes sur shell, les seules commandes qui peuvent être utilisées sont celles qui peuvent être trouvées sur certains répertoires définis sur PATH. Même je ne sais pas comment voir quels répertoires se trouvent sur ma variable PATH (et c'est une autre bonne question à laquelle on pourrait répondre), ce que j'aimerais savoir c'est:
Je viens décortiquer et écrire:
$ lshw
Je veux connaître une commande sur le shell qui peut me dire où se trouve cette commande. En d'autres termes, où se trouve ce "fichier exécutable"?
Quelque chose comme:
$ location lshw
/usr/bin
N'importe qui?
la source
locate
il peut vous aider à trouver des fichiers. Il utilise une base de données gérée parupdatedb
laquelle est exécutée à partir d'un travail cron. Puisquelocate
recherche dans une base de données plutôt que dans tout le système de fichiers, c'est beaucoup plus rapide quefind
(ce qui pourrait être utilisé en dernier recours).type -a
peut prêter à confusion. par exemple dans le cas denvm
laquelle est une fonction bash que je devais faire:type -a nvm | head -n1
pour savoir ce que c'est exactementnvm
.type -a
la définition de la fonction ainsi que le type d'exécutable. Le risque avec l'utilisationhead
est que dans le cas de noms avec plus d'un type, les types supplémentaires ne seront pas affichés. Vous voudrez peut-être regardertype -t
.Comme ça:
Pour voir toutes les commandes qui correspondent à votre chemin:
la source
which
est problématique car il existe plusieurs implémentations, dont beaucoup font complètement la mauvaise chose, et d'autres semblent bien fonctionner, mais ont d'étranges surprises. Vous devrieztype
plutôt préférer .type -a lshw
PATH
est une variable d'environnement, et peut être affichée avec la commande echo:C'est une liste de chemins séparés par le caractère deux-points '
:
'La
which
commande vous indique quel fichier est exécuté lorsque vous exécutez une commande:parfois ce que vous obtenez est un chemin vers un lien symbolique; si vous souhaitez tracer ce lien jusqu'à l'emplacement de l'exécutable réel, vous pouvez utiliser
readlink
et lui fournir la sortie dewhich
:Le
-f
paramètre indiquereadlink
de continuer à suivre le lien symbolique de manière récursive.Voici un exemple de ma machine:
la source
la source
Dans le TENEX C Shell, tcsh , on peut lister le (s) emplacement (s) d'une commande, ou s'il s'agit d'une commande intégrée, en utilisant la
where
commande par exemple:la source
Le shell Korn,,
ksh
propose le modulewhence
intégré, qui identifie les autres modules internes du shell, les macros, etc. Lawhich
commande est cependant plus portable.la source
whence -a
est similaire à celui de Bashtype -a
.Une alternative à
type -a
estcommand -V
Puisque la plupart du temps je ne m'intéresse qu'au premier résultat, je pipe aussi de la tête. De cette façon, l'écran ne sera pas inondé de code en cas de fonction bash.
la source