Как работает псевдоним sudo=sudo ?

Рассматривая способы передачи псевдонимов текущего пользователя команде sudo, я нашел следующее в ArchWiki:

Передача псевдонимов

Если вы используете много псевдонимов, вы могли заметить, что они не переносятся на учетную запись root при использовании sudo. Однако есть простой способ заставить их работать. Просто добавьте следующее к вашему ~/.bashrc или /etc/bash.bashrc:

alias sudo='sudo '

Я не понимаю, почему это работает. Если оболочке все равно, сколько пробелов между двумя командами, как это может иметь какой-либо эффект?

При ручном добавлении пробела я не вижу разницы:

$ alias e=echo
$ sudo e foo
sudo: e: command not found
$ sudo  e foo              # Manual space addition
sudo: e: command not found # Fail
$ alias sudo="sudo "       # Now with alias
$ sudo e foo
foo                        # Succeeds, but why?

Явное псевдоним sudo для sudo + пробел каким-то образом позволяет передавать псевдонимы. Это работает на zsh, bash и sh, поэтому это поведение не зависит от оболочки.

Как работает этот псевдоним?


person PLNech    schedule 13.05.2016    source источник
comment
Это не то, что нужно понимать, просто не делайте этого. Разрешить sudo вызывать псевдоним — это такая же хорошая идея, как стоять на шатком трехногом стуле с петлей на шее.   -  person William Pursell    schedule 13.05.2016


Ответы (1)


Глядя на справочную страницу для псевдонима:

Конечный пробел в VALUE заставляет следующее слово проверяться на замену псевдонима, когда псевдоним расширяется.

Источник: http://www.linuxcommand.org/lc3_man_pages/aliash.html

person andlrc    schedule 13.05.2016