Est-il possible de vérifier où un alias a été défini?

Un alias, tel que ll est défini avec la command alias .

Je peux vérifier la command avec des choses comme le type ll qui imprime

 ll is aliased to `ls -l --color=auto' 

ou command -v ll qui imprime

 alias ll='ls -l --color=auto' 

ou alias ll qui imprime également

 alias ll='ls -l --color=auto' 

mais je n'arrive pas à find l'alias a été défini, c'est-à-dire un file tel que .bashrc , ou peut-être manuellement dans le shell en cours d'exécution. À ce stade, je ne suis pas certain que cela soit possible.

Dois-je simplement parcourir tous les files chargés par bash et vérifier chacun d'entre eux?

La définition manuelle sera difficile à repérer (l'historique des logs, peut-être) bien que demandant au shell de montrer ce qu'il fait et alors grep devrait aider à find ceux définis dans un file rc:

 bash -ixlc : 2>&1 | grep ... zsh -ixc : 2>&1 | grep ... 

Si le shell ne capture pas précisément les options nécessaires avec l'une des invocations ci-dessus (qui exécutent la command null de manière interactive), alors script :

 script somethingtogrep thatstrangeshell -x ... grep ... somethingtogrep 

Une autre option serait d'utiliser quelque chose comme strace ou sysdig pour find tous les files que le shell touche, puis allez grep ceux manuellement (pratique si le shell ou le programme n'a pas d'indicateur -x ); les files RC standard ne sont pas suffisants pour un contrôle manuel du nom de file si quelque chose comme oh-my-zsh ou des configurations spécifiques au site tirent du code de qui sait où (ou aussi il peut y avoir des variables d'environnement, comme sorontar le souligne dans leur réponse) .

Voici où je trouve grep -rl très utile:

 grep -rl alias ~/.bash* ~/.profile /etc/profile /etc/bash.bashrc 

vous dira dans quel file le mot alias est utilisé.

Probablement dans ~/.bashrc et certainement dans ~/.bash_aliases s'il existe.


Il est cependant impossible d'être absolument sûr que cela couvre toutes les options. Ces files peuvent également appeler ou charger d'autres files. Une variable d'environnement comme ENV ou $BASH_ENV peut diriger bash pour charger d'autres files.

search la variable BASH_ENV dans l'environnement, étend sa valeur si elle y apparaît et utilise la valeur développée comme nom d'un file à lire et à exécuter.

Et les alias peuvent même être définis en définissant une variable (emphase mienne):

BASH_ALIASES
Une variable tableau associative dont les membres correspondent à la list interne des alias maintenue par l'alias embedded. Les éléments ajoutés à ce tableau apparaissent dans la list des alias

Je ne sais pas comment listr réellement la source de vos alias, mais comme il semble que vous utilisez bash je pense que ce sont les files sources possibles:

 /etc/profile ~/.profile /etc/bash.bashrc ~/.bash_profile ~/.bashrc 

Vous devriez être capable de grep à travers ceux-ci pour find l'alias, par exemple grep 'ls -l --color=auto' /etc/profile ~/.profile /etc/bash.bashrc ~/.bash_profile ~/.bashrc .

Vérifier ~ / .profile si ce n'est pas dans ~ / .bashrc