Где находится скрипт для команды alias в Linux?

Где находится скрипт для команды alias в Linux?

Я хочу добавить аргумент в скрипт псевдонима 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

Связанный контент