Puoi usare la funzione di debug della shell per vedere esattamente cosa sta succedendo quando bash invoca una shell interattiva. Quanto segue dovrebbe mostrare tutti gli alias assegnati quando una shell interattiva viene generata da una shell di accesso:
bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
-x
-> abilita il debug
-l
-> login shell
-i
-> shell interattiva
-c
-> comando
L'esecuzione del comando exit è necessaria affinché la shell ritorni. Il -i
è necessario in questo caso perché bash non impostare un ambiente interattivo per eseguire un comando altrimenti.
Ecco un esempio dal mio sistema:
$ bash -x -l -i -c 'exit' 2>&1 | grep ' alias '
++ alias 'ls=ls --color=auto'
$ alias -p
alias ls='ls --color=auto'
Per vedere quale file è stato acquistato l'ultima volta quando è stato assegnato l'alias per determinare il file che si è verificato, è possibile estendere grep:
bash -x -l -i -c 'exit' 2>&1 | grep -E ' (alias|[.]|source) '
Ciò può restituire falsi positivi, ma dovrebbe andare bene se si stanno controllando manualmente i dati restituiti. Il numero di simboli "+" davanti al comando eseguito indica la profondità.
+ . /home/jordan/.bashrc
++ alias 'ls=ls --color=auto'
++ . /home/jordan/.foo
+++ alias t=test
++ alias t=test2
In questo esempio di output, mostra che .bashrc imposta un alias per ls
, .foo aliases t
, e quindi .bashrc sostituisce l'alias precedente di t
.