![Где находится скрипт для команды alias в Linux?](https://rvso.com/image/134425/%D0%93%D0%B4%D0%B5%20%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D1%82%D1%81%D1%8F%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%20%D0%B4%D0%BB%D1%8F%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%20alias%20%D0%B2%20Linux%3F%20.png)
Я хочу добавить аргумент в скрипт псевдонима bash, чтобы можно было просто запустить
alias -p l='ls -l'
и он будет добавлен в мой .zshrc навсегда. Но я не могу найти скрипт оболочки для alias.
Я пробовал whereis alias
, но безуспешно. Даже man alias
псевдоним не имеет записи.
Я заглянул, /usr/bin, /usr/share/local/bin
но безуспешно. Может кто-нибудь указать место?
EDIT: Я также попытался рассмотреть все возможные путиls $(echo $PATH| tr ':' '\n') | grep alias
решение1
alias
это встроенная команда, поэтому она не отображается как скрипт в каком-либо файле или как функция. Команда type
покажет это:
$ type alias
alias is a shell builtin
Но вы все равно можете переопределить ее. Функция с тем же именем будет маскировать встроенную функцию, если только она явно не вызвана встроенной функцией builtin
.
Итак, должно сработать что-то вроде этого:
alias() {
if [ "$1" = "-p" ]; then
echo "-p was given";
shift;
fi;
builtin alias "$@";
}
Если вы хотите вывести то же самое назначение псевдонима файлу, вам нужно быть внимательным и правильно его заключить в кавычки, чтобы его можно было использовать в качестве входных данных для оболочки.
Что-то вроде этого может подойти (добавляется сразу после shift
в функции), но обязательно проверьте:printf "alias %q\n" "$@" >> ~/my.alias.file
Что касается проблемы Bash и Zsh, я думаю, что вышеизложенное работает с обоими, но я не эксперт по Zsh.
Кстати, вы также можете отметить, что в Bash alias
уже есть такая -p
опция help alias
:
Options:
-p print all defined aliases in a reusable format
Не знаю, есть ли от этого польза, поскольку поведение по умолчанию alias
без аргументов также заключается в выводе всех псевдонимов в формате, пригодном для повторного использования.
решение2
Ваша alias
команда, скорее всего, встроена в оболочку, а не является скриптом. Вы можете проверить это с помощью команды type
:
user@host:~$ type alias
alias is a shell builtin
Чтобы получить документацию по alias
встроенной функции, вам следует заглянуть на bash
страницу руководства:
man bash
Чтобы сделать псевдоним постоянным, обычно нужно добавить команду в один из файлов профиля Bash — скорее всего, в ваш ~/.bashrc
файл, например:
user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc
решение3
Насколько я могу судить, zsh
постоянные псевдонимы не поддерживаются.
Если вам нравятся постоянные псевдонимы, я рекомендую вам проверитьhttp://schilytools.sourceforge.net/man/man1/bosh.1.htmlдля реализации псевдонимов с постоянной доступностью.
Для других оболочек псевдонимы могут быть записаны только как команды псевдонимов внутри соответствующего .*shrc
файла.
решение4
Я в основном работаю с bash и храню свои псевдонимы в .bashrc.
Он находится в моем домашнем каталоге в /home/myuser/.bashrc