研究将当前用户的别名传递给sudo
命令,我发现以下内容在 ArchWiki 上 https://wiki.archlinux.org/index.php/Sudo#Passing_aliases:
传递别名
如果您使用很多别名,您可能会注意到它们并没有
使用 sudo 时转移到 root 帐户。然而,有一个
让它们发挥作用的简单方法。只需将以下内容添加到您的~/.bashrc
or /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 以某种方式允许传递别名。这适用于zsh
, bash
and sh
,因此这不是特定于 shell 的行为。
这个别名是如何工作的?
查看别名的手册页:
VALUE 中的尾随空格会导致检查下一个单词
扩展别名时的别名替换。
Source: http://www.linuxcommand.org/lc3_man_pages/aliash.html http://www.linuxcommand.org/lc3_man_pages/aliash.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)