查看将当前用户的别名传递给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 + space以某种方式允许传递别名。这适用于zsh
、bash
和sh
,因此它不是特定于shell的行为。
3条答案
按热度按时间eaf3rand1#
查看alias的手册页:
VALUE中的尾随空格会导致在展开别名时检查下一个单词是否有别名替换。
来源:http://www.linuxcommand.org/lc3_man_pages/aliash.html
6g8kf2rb2#
尾随空格会使shell在下一个单词上也尝试别名扩展。
参见https://stackoverflow.com/a/37210013/2115619获取源代码。
这可以无限嵌套:
字符串
你也可以像这样创建一个无用但透明的别名:
型
xtupzzrd3#
我们为团队提供的最佳实践:
字符串
只要加上一个你认为对自己有必要的别名