which
est en fait une mauvaise façon de faire des choses comme ça, car cela permet de deviner votre environnement en fonction $SHELL
des fichiers de démarrage (il pense) que le shell utilise; non seulement cela donne-t-il parfois tort, mais on ne peut généralement pas lui dire de se comporter différemment. ( which
sur mon Ubuntu 10.10 ne comprend pas, --skip-alias
comme mentionné par @SiegeX, par exemple.) type
utilise l’environnement shell actuel au lieu de fouiller dans vos fichiers de configuration, et on peut lui dire d’ignorer des parties de cet environnement, ce qui vous montre ce qui se passera réellement. arriver au lieu de ce qui se passerait dans une reconstruction de votre shell par défaut.
Dans ce cas, type -P
ignorera tous les alias ou fonctions:
$ type -P vim
/usr/bin/vim
Vous pouvez également lui demander de retirer toutes les couches, une à la fois, et de vous montrer ce qu'il trouverait:
$ type -a vim
vim is aliased to `vim -X'
vim is /usr/bin/vim
(En développant ceci à partir des commentaires :)
Le problème, which
c'est qu'il s'agit généralement d'un programme externe au lieu d'un shell intégré, ce qui signifie qu'il ne peut pas voir vos alias ni vos fonctions et doit essayer de les reconstruire à partir des fichiers de démarrage / configuration du shell. (Si c'est un shell intégré, comme c'est le cas, zsh
mais apparemment pas bash
, il est plus susceptible d'utiliser l'environnement du shell et de faire la bonne chose.)
type
est une commande compatible POSIX qui doit se comporter comme si elle était intégrée (c’est-à-dire qu’elle doit utiliser l’environnement du shell dans lequel elle est invoquée, y compris les alias et les fonctions locaux); elle est donc généralement intégrée.
Il ne se trouve généralement pas dans csh
/ tcsh
, bien que, dans la plupart des versions modernes, il s’agisse d’ which
un shell intégré qui fait le bon choix; parfois intégré est au what
lieu, et parfois il n'y a pas de bonne façon de voir l'environnement de l'interpréteur de commandes actuel de csh
/ tcsh
du tout.
vim
vient , vous pouvez utiliserwhere vim