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).

42
demandé sur pjmorse 2010-04-10 22:18:50

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

30
répondu cweekly 2014-11-04 18:33:27

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
25
répondu ghostdog74 2010-04-10 23:42:07

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

13
répondu sixtyfootersdude 2010-04-12 14:17:11

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
6
répondu Stovey 2013-11-25 15:12:51

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é.

1
répondu Richard Fuhr 2010-04-10 18:29:56

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
1
répondu user1372408 2013-02-14 09:31:27

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>

0
répondu sixtyfootersdude 2017-05-23 10:31:10

, Essayez: alias | grep name_of_alias Ex.: alias | grep mysql

ou, comme déjà mentionné ci-dessus

which name_of_alias

-1
répondu Blckmamba 2018-07-19 17:39:32

dans mon cas, J'utilise Oh mon Zsh, donc j'ai mis la définition des alias dans ~/.zshrc "151920920 de fichier".

-7
répondu ryan 2017-04-06 03:30:20