Comment savoir où alias (au sens bash) est défini lors de L'exécution du Terminal dans Mac OS X
Comment puis-je savoir où un alias est défini sur mon système? Je me réfère au type d'alias qui est utilisé dans une session de Terminal lancée à partir de Mac OS X (10.6.3).
par exemple, si j'entre la commande alias
sans paramètres à une invite de commande de Terminal, j'obtiens une liste d'alias que j'ai mis, par exemple:
alias mysql='/usr/local/mysql/bin/mysql'
cependant, j'ai cherché partout dans mon système en utilisant Spotlight et mdfind
dans divers les fichiers de démarrage et jusqu'à présent, ne peut pas trouver où cet alias a été défini. ( Je l'ai fait il y a longtemps et je n'ai pas écrit où j'ai assigné le pseudonyme).
9 réponses
pour OSX, cette séquence en 2 étapes a bien fonctionné pour moi, en localisant un alias que j'avais créé il y a longtemps et que je ne pouvais pas localiser à l'endroit prévu (~/.zshrc).
cweekly:~ $ which la
la: aliased to ls -lAh
cweekly:~$ grep -r ' ls -lAh' ~
/Users/cweekly//.oh-my-zsh/lib/aliases.zsh:alias la='ls -lAh'
Aha! "Se cacher" dans ~/.oh-my-zsh/lib/aliases.zsh
. J'avais tourné un peu autour de .Oh-my-zsh mais avait négligé lib / alias.zsh.
HTH
vous pouvez simplement taper alias
sur l'invite de commande pour voir quels Alias vous avez. Sinon, vous pouvez faire un find
sur les endroits les plus communs où les alias sont définis, par exemple,
grep -RHi "alias" /etc /root
même à l'avenir ce sont les fichiers de configuration standard de bash
- /etc / profile
- ~/.bash_profile ou ~/.bash_login ou ~/.profil
- ~/.bash_logout
- ~/.bashrc
plus d'informations: http://www.heimhardt.com/htdocs/bashrcs.html
un peu tard pour le parti, mais j'avais le même problème (j'essayais de trouver où la commande" L. " était aliasée dans RHEL6), et j'ai fini dans un endroit non mentionné dans les réponses précédentes. Il ne se trouve pas dans toutes les implémentations de bash, mais dans le profil /etc/.le répertoire d / existe, essayez d'y grepping pour des alias inexpliqués. C'est là que j'ai trouvé:
[user@server ~]$ grep l\. /etc/profile.d/*
/etc/profile.d/colorls.csh:alias l. 'ls -d .*'
/etc/profile.d/colorls.csh:alias l. 'ls -d .* --color=auto'
/etc/profile.d/colorls.sh: alias l.='ls -d .*' 2>/dev/null
/etc/profile.d/colorls.sh:alias l.='ls -d .* --color=auto' 2>/dev/null
le répertoire n'est pas mentionné dans la page de manuel de bash, et ne fait pas correctement partie d'où bash recherche des informations de profil/démarrage, mais dans le cas de RHEL vous pouvez voir le code d'appel dans /etc / profile:
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
j'ai trouvé la réponse ( je regardais le bon dossier, mais j'ai manqué l'évidence ).
L'alias dans mon cas sont définis dans le fichier ~/.bash_profile
ça m'a échappé.
pour les configurations plus complexes (par exemple, lorsque vous utilisez un framework de script shell comme bash-it, oh-my-zsh ou les j'aime), il est souvent utile d'ajouter 'alias mysql' à des positions clés de vos scripts. Cela vous aidera à comprendre exactement lorsque l'alias est ajouté.
p.ex.:
echo "before sourcing .bash-it:"
alias mysql
. $HOME/.bash-it/bash-it.sh
echo "after sourcing bash:"
alias mysql
je pense que c'est peut-être similaire à ce que ghostdog74 signifiait mais leur commande ne fonctionnait pas pour moi.
je voudrais essayer quelque chose comme ceci:
for i in `find . -type f`; do # find all files in/under current dir
echo "========"
echo $i # print file name
cat $i | grep "alias" # find if it has alias and if it does print the line containing it
done
si vous voulez être vraiment chic, vous pouvez même ajouter un if [[ grep -c "alias" ]] then <print file name>
, Essayez: alias | grep name_of_alias
Ex.: alias | grep mysql
ou, comme déjà mentionné ci-dessus
which name_of_alias
dans mon cas, J'utilise Oh mon Zsh, donc j'ai mis la définition des alias dans ~/.zshrc "151920920 de fichier".