Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Экранирование псевдонимов в bash для запуска реальной программы

В .bashrc у меня есть комментарий перед примерами алиасов:
# Some example alias instructions # If these are enabled they will be used instead of any instructions # they may mask. For example, alias rm='rm -i' will mask the rm # application. To override the alias instruction use a \ before, ie #
m will call the real rm not the alias.
В "bash Cookbook" тоже говорится о таком способе запуска реальных программ, а не псевдонимов.
Но в man bash про такое внятно (конкретно) не говориться. Всё, что нашел: "A non-quoted backslash ‘\’ is the Bash escape character. It preserves the literal value of the next character that follows, with the exception of newline."
Каким образом сохранение буквального значения одного символа отключает использование псевдонима?


Ответ

Вот ключевое предложение:
The first word of each simple command, if unquoted, is checked to see if it has an alias.

m, также как "rm" или "r"m, частично экранированы. Поэтому поиск среди alias'ов не происходит. См. также:
https://stackoverflow.com/a/16506263/1892060 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_03_01

Комментариев нет:

Отправить комментарий