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 où 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