72 lines
2.0 KiB
Markdown
72 lines
2.0 KiB
Markdown
# La commande `type` sous Linux
|
|
|
|
La commande `type` permet de savoir comment le shell interprète un nom de commande : alias, fonction, primitive (builtin), mot-clé du shell ou exécutable sur le disque. C'est un outil précieux pour comprendre pourquoi une commande se comporte d'une certaine manière et pour déboguer son environnement shell.
|
|
|
|
`type` est une primitive intégrée à Bash (et conforme à POSIX), il n'y a donc rien à installer.
|
|
|
|
## Syntaxe
|
|
|
|
```bash
|
|
type [options] nom [nom ...]
|
|
```
|
|
|
|
Où `nom` est la commande à examiner. Plusieurs noms peuvent être passés en argument.
|
|
|
|
## Les options
|
|
|
|
- **`-a`** : affiche **toutes** les interprétations possibles du nom, dans l'ordre où le shell les considère (alias, fonction, builtin, puis exécutables trouvés dans `PATH`).
|
|
|
|
- **`-t`** : affiche un mot unique décrivant le type de la commande : `alias`, `function`, `builtin`, `keyword` ou `file`. Pratique dans les scripts.
|
|
|
|
- **`-p`** : affiche le chemin de l'exécutable qui serait lancé. Ne produit **aucune sortie** si le nom correspond à un alias, une fonction ou un builtin.
|
|
|
|
- **`-P`** : force la recherche dans `PATH` et affiche le chemin de l'exécutable correspondant, **même si** le nom est aussi un alias ou une fonction.
|
|
|
|
## Exemples
|
|
|
|
Vérifier un alias :
|
|
|
|
```bash
|
|
$ type ls
|
|
ls est un alias vers « ls --color=auto »
|
|
```
|
|
|
|
Afficher toutes les interprétations d'un nom :
|
|
|
|
```bash
|
|
$ type -a ls
|
|
ls est un alias vers « ls --color=auto »
|
|
ls est /usr/bin/ls
|
|
```
|
|
|
|
Identifier une primitive du shell :
|
|
|
|
```bash
|
|
$ type cd
|
|
cd est une primitive du shell
|
|
```
|
|
|
|
Vérifier un exécutable binaire :
|
|
|
|
```bash
|
|
$ type grep
|
|
grep est /usr/bin/grep
|
|
```
|
|
|
|
Obtenir uniquement le type, utile en script :
|
|
|
|
```bash
|
|
$ type -t grep
|
|
file
|
|
$ type -t cd
|
|
builtin
|
|
```
|
|
|
|
Récupérer le chemin d'un binaire en ignorant un éventuel alias :
|
|
|
|
```bash
|
|
$ type -P ls
|
|
/usr/bin/ls
|
|
```
|
|
|
|
En résumé, `type` est l'outil le plus fiable pour répondre à la question « qu'est-ce qui s'exécute réellement quand je tape cette commande ? », là où `which` ne voit que les fichiers du `PATH`. |