当我使用 sudo bash 时保留别名

当我使用 sudo bash 时保留别名

我有一台 Centos 5.5 服务器,它有我自己的帐户别名命令。当我这样做时,sudo bash我仍然可以使用这些别名,我不必将别名添加到根的.bashrc.

我还有另一台服务器是Centos 6.5。但是当我执行时sudo bash,它不会使用我登录的用户的别名。有谁知道我在哪里配置它以包含我使用时登录的用户的别名sudo bash

答案1

将以下行添加到 ~/.bashrc 中:

alias sudo='sudo '

来自 bash 手册

别名允许在用作简单命令的第一个单词时用字符串替换单词。 shell 维护一个别名列表,可以使用 alias 和 unalias 内置命令设置和取消设置。

每个简单命令的第一个单词(如果未加引号)将被检查以查看它是否有别名。如果是这样,该单词将被别名的文本替换。字符“/”、“$”、“`”、“=”以及上面列出的任何 shell 元字符或引用字符不得出现在别名中。替换文本可以包含任何有效的 shell 输入,包括 shell 元字符。替换文本的第一个单词会进行别名测试,但与正在扩展的别名相同的单词不会再次扩展。例如,这意味着可以将 ls 别名为“ls -F”,并且 Bash 不会尝试递归地扩展替换文本。如果别名值的最后一个字符是空格或制表符,则还会检查别名后面的下一个命令字是否有别名扩展。

因此 Bash 只检查命令的第一个单词是否有别名,之后的任何单词都不会被检查。这意味着在像 sudo ll 这样的命令中,bash 仅检查第一个单词 (sudo) 的别名,ll 会被忽略。我们可以通过在别名值末尾添加一个空格来告诉 bash 检查别名后的下一个单词(即 sudo)。

答案2

使用sudo -E,这将导出您的环境。

相关内容