Подтвердить что ты не робот

Как узнать, где псевдоним (в значении bash) определяется при запуске терминала в Mac OS X

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

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

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

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

4b9b3361

Ответ 1

Для 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'

Ага! "Скрытие" в ~/.oh-my-zsh/lib/aliases.zsh. Я немного покопался в .oh-my-zsh, но пропустил lib/aliases.zsh.

Ответ 2

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

grep -RHi "alias" /etc /root

Ответ 3

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

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

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

Ответ 4

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

[[email protected] ~]$ 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/раздел:

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

Ответ 5

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

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

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

Ответ 6

Для более сложных настроек (например, когда вы используете фреймворк оболочки script, такой как 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

Ответ 7

Я думаю, что, возможно, это похоже на то, что 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>

Ответ 8

Сначала используйте следующие команды

Перечислите все функции

functions 

Список всех псевдонимов

alias 

Если вы не нашли псевдоним или функцию, используйте более агрессивный метод поиска

Bash версия

bash -ixlc : 2>&1 | grep thingToSearchHere

Zsh версия

zsh -ixc : 2>&1 | grep thingToSearchHere

Краткое объяснение опций

-i     Force shell to be interactive.

-c     Take the first argument as a command to execute

-x      -- equivalent to --xtrace

-l      Make bash act as if invoked as a login shell

Ответ 9

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

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

which name_of_alias

Ответ 10

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