Vous pouvez utiliser la fonction de débogage du shell pour voir exactement ce qui se passe lorsque bash appelle un shell interactif. Les éléments suivants devraient vous montrer tous les alias attribués lorsqu'un shell interactif est généré à partir d'un shell de connexion:
bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
-x
-> activer le débogage
-l
-> shell de connexion
-i
-> shell interactif
-c
-> commande
L'exécution de la commande exit est nécessaire pour que le shell revienne. Le -i
est requis dans ce cas car bash ne configurerait pas un environnement interactif pour exécuter une commande autrement.
Voici un exemple de mon système:
$ bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
++ alias 'ls=ls --color=auto'
$ alias -p
alias ls='ls --color=auto'
Afin de voir quel fichier a été généré pour la dernière fois lorsque l'alias a été affecté pour déterminer le fichier sur lequel il s'est produit, vous pouvez étendre le grep:
bash -x -l -i -c 'exit' 2>&1 | grep -E ' (alias|[.]|source) '
Cela peut renvoyer des faux positifs, mais cela devrait être correct si vous inspectez manuellement les données renvoyées. Le nombre de symboles «+» devant la commande exécutée indique la profondeur.
+ . /home/jordan/.bashrc
++ alias 'ls=ls --color=auto'
++ . /home/jordan/.foo
+++ alias t=test
++ alias t=test2
Dans cet exemple de sortie, il montre que .bashrc définit un alias pour ls
, .foo alias t
, puis .bashrc remplace l'alias précédent de t
.