Comment tester si la commande est un alias, une fonction ou un binaire?

Réponses:

23

Si vous êtes sur Bash (ou un autre shell de type Bourne), vous pouvez utiliser type.

type command

vous dira si commandun shell est intégré, un alias (et si oui, un alias vers quoi), une fonction (et si c'est le cas, il listera le corps de la fonction) ou stocké dans un fichier (et si oui, le chemin d'accès au fichier) .

Pour plus d'informations sur un fichier "binaire", vous pouvez faire

file "$(type -P command)" 2>/dev/null

Cela ne renverra rien si commandun alias, une fonction ou un shell est intégré mais renvoie plus d'informations s'il s'agit d'un script ou d'un binaire compilé.

Les références

Joseph R.
la source
3

La réponse dépendra du shell que vous utilisez.

Pour zsh, le shell intégré whence -wvous dira exactement ce que vous voulez

par exemple

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
numéro 5
la source
1

En zsh vous pouvez vérifier les aliases, functionset les commandstableaux.

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

Il y a aussi builtins, pour les commandes intégrées.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
ericbn
la source