我有一台 Centos 5.5 服务器,它为我的帐户提供了自己的别名命令。当我这样做时,sudo bash我仍然可以使用这些别名,我不必将别名添加到根目录的.bashrc.
我有另一台 Centos 6.5 服务器。但是当我执行时sudo bash,它不会使用我登录的用户的别名。有谁知道我在哪里配置它以包含我在使用时登录的用户的别名sudo bash?
小智 11
将以下行添加到您的 ~/.bashrc 中:
alias sudo='sudo '
Run Code Online (Sandbox Code Playgroud)
来自 bash 手册
当一个词用作简单命令的第一个词时,别名允许用一个字符串替换一个词。shell 维护一个别名列表,可以使用 alias 和 unalias 内置命令设置和取消设置这些别名。
每个简单命令的第一个单词,如果没有被引用,则检查它是否有别名。如果是,则该词将替换为别名的文本。字符 '/'、'$'、'`'、'=' 以及上面列出的任何 shell 元字符或引用字符不能出现在别名中。替换文本可以包含任何有效的 shell 输入,包括 shell 元字符。替换文本的第一个单词会被测试别名,但与被扩展的别名相同的单词不会被第二次扩展。这意味着可以将 ls 别名为“ls -F”,例如,Bash 不会尝试递归扩展替换文本。如果别名值的最后一个字符是空格或制表符,那么还会检查别名之后的下一个命令字的别名扩展。
所以 Bash 只检查命令的第一个单词是否有别名,后面的任何单词都不会检查。这意味着在像 sudo ll 这样的命令中,bash 只检查第一个单词 (sudo) 的别名,忽略 ll。我们可以通过在别名值的末尾添加一个空格来告诉 bash 检查别名之后的下一个单词(即 sudo)。
使用sudo -E,这将导出您的环境。