La whichcommande ne renvoie que les exécutables: elle ne sait rien des alias, car il s'agit d'un programme externe, et il n'y a pas de mécanisme pour transmettre des informations d'alias à un processus enfant.
Si vous entrez la commande, type -a cpvous verrez toutes les interprétations possibles, par ordre de préférence. Cela inclut tout alias, car il types'agit d'une bashcommande interne.
Il est important de réaliser qu'un alias ne sera pas interprété par un sous-processus, tel qu'un script ou un éditeur interactif qui a une option pour exécuter des commandes système.
Si vous créez cpune fonction, votre version s'exécutera dans des scripts, mais pas à partir d'autres programmes:
cp() { /usr/local/bin/gcp "$@"; }
Si vous voulez que vous cptravailliez partout, ajoutez $HOME/binen tête de votre PATHliste et $HOME/bin/cppointez-la vers elle:
ln -s /usr/local/bin/gcp $HOME/bin/cp
Cela crée un lien symbolique, bien que vous puissiez en faire un lien dur légèrement plus efficace (omis -s), mais cela nécessite normalement des autorisations root ( sudo ln ...). La création d'une fonction et son ajout à la PATHvariable se feront dans l'un des bashscripts de démarrage, avec des autorisations utilisateur.
PATHenvar.