在寻找将当前用户的别名传递给sudo
命令的方法时,我发现了以下 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+空格,可以以某种方式传递别名。这在zsh、bash和sh上都有效,因此它不是特定于shell的行为。