如何`别名sudo =" sudo"`工作?

时间:2016-05-13 12:20:32

标签: shell sh alias sudo

查看将当前用户的别名传递给sudo命令的方法,我找到了以下on ArchWiki

  

传递别名

     

如果你使用了很多别名,你可能已经注意到他们没有   使用sudo时转移到root帐户。但是,有一个   简单的方法让他们工作。只需将以下内容添加到您的   ~/.bashrc/etc/bash.bashrc

     

alias sudo='sudo '

我不知道为什么会这样。如果shell不关心两个命令之间有多少个空格,那么这怎么会有效?

手动添加空格时,我认为没有区别:

$ 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 + space以某种方式允许传递别名。这适用于zshbashsh,因此它不是特定于shell的行为。

这个别名如何运作?

1 个答案:

答案 0 :(得分:12)

查看别名的手册页:

  

VALUE中的尾随空格会导致检查下一个单词       别名扩展时的别名替换。

来源:http://www.linuxcommand.org/lc3_man_pages/aliash.html