Как узнать, где псевдоним (в смысле bash) определяется при запуске терминала в Mac OS X - PullRequest
51 голосов
/ 10 апреля 2010

Как я могу узнать, где в моей системе определен псевдоним? Я имею в виду тип псевдонима, который используется в сеансе терминала, запущенного из Mac OS X (10.6.3).

Например, если я введу команду alias без параметров в командной строке терминала, я получу список установленных псевдонимов, например:

alias mysql='/usr/local/mysql/bin/mysql'

Однако я провел поиск по всей моей системе, используя Spotlight и mdfind в различных файлах запуска, и до сих пор не могу найти, где этот псевдоним был определен. (Я сделал это давным-давно и не записывал, где я назначил псевдоним).

Ответы [ 9 ]

41 голосов
/ 04 ноября 2014

Для OSX эта двухэтапная последовательность работала хорошо для меня при поиске псевдонима, который я создал давно и не смог найти в ожидаемом месте (~ / .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! «Прятаться» в ~/.oh-my-zsh/lib/aliases.zsh. Я немного покопался в .oh-my-zsh, но пропустил lib / aliases.zsh.

30 голосов
/ 11 апреля 2010

Вы можете просто набрать alias в командной строке, чтобы увидеть, какие псевдонимы у вас есть. В противном случае вы можете сделать find в наиболее распространенных местах, где определены псевдонимы, например,

grep -RHi "alias" /etc /root
14 голосов
/ 12 апреля 2010

Также в будущем это стандартные файлы конфигурации bash

  • / и т.д. / профиль
  • ~ / .bash_profile или ~ / .bash_login или ~ / .profile
  • ~ / .bash_logout
  • ~ / .bashrc

Дополнительная информация: http://www.heimhardt.com/htdocs/bashrcs.html

6 голосов
/ 25 ноября 2013

Немного опоздал на вечеринку, но у меня возникла та же проблема (пытаясь найти, где команда "l." Была псевдонимом в RHEL6), и он оказался в месте, не упомянутом в предыдущих ответах. Его можно найти не во всех реализациях bash, но если каталог /etc/profile.d/ существует, попробуйте поискать там для необъяснимых псевдонимов. Вот где я нашел:

[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

Каталог не упоминается на man-странице bash и не является частью того, где bash ищет информацию о профиле / запуске, но в случае RHEL вы можете увидеть вызывающий код в / 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
1 голос
/ 14 февраля 2013

Для более сложных установок (например, когда вы используете среду сценариев оболочки, такую ​​как bash-it, oh-my-zsh или тому подобное), часто бывает полезно добавить 'alias mysql' на ключевые позиции в ваших скриптах. Это поможет вам точно определить, когда добавляется псевдоним.

например:.

echo "before sourcing .bash-it:"
alias mysql
. $HOME/.bash-it/bash-it.sh
echo "after sourcing bash:"
alias mysql
1 голос
/ 10 апреля 2010

Я нашел ответ (я смотрел на правильный файл, но пропустил очевидное).

Псевдонимы в моем случае определены в файле ~ / .bash_profile

Каким-то образом это ускользнуло от меня.

0 голосов
/ 19 июля 2018

Попробуйте: alias | grep name_of_alias Пример: alias | grep mysql

или, как уже упоминалось выше

which name_of_alias

0 голосов
/ 06 апреля 2017

В моем случае я использую Oh My Zsh, поэтому я помещаю определение псевдонимов в файл ~ / .zshrc .

0 голосов
/ 12 апреля 2010

Я думаю, что, возможно, это похоже на то, что имел в виду ghostdog74 , однако их команда не работала для меня.

Я бы попробовал что-то вроде этого:

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

Если вы хотите быть по-настоящему модным, вы можете даже добавить if [[ grep -c "alias" ]] then <print file name>

...