Как узнать, где псевдоним (в значении bash) определяется при запуске терминала в Mac OS X
Как узнать, где в моей системе определен псевдоним? Я имею в виду тип псевдонима, который используется в сеансе терминала, запущенного из Mac OS X (10.6.3).
Например, если я введу команду alias
без параметров в командной строке терминала, я получаю список псевдонимов, которые я установил, например:
alias mysql='/usr/local/mysql/bin/mysql'
Тем не менее, я искал всю свою систему с помощью Spotlight и mdfind
в различных файлах автозагрузки и пока не нашел, где этот псевдоним определен. (Я сделал это давным-давно и не записал, где я назначил псевдоним).
Ответы
Ответ 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.