Sudo 不适用于别名

Sudo 不适用于别名

我已经添加了alias ll='ls -la'/etc/bash.bashrc,但sudo ll不起作用。有没有办法“获取”bash.bashrc?在相关帖子中,另一位用户建议为 sudo 创建一个别名,并在其后加一个空格。例如。alias sudo='sudo '但这个答案没有任何上下文。我应该把它添加到我的 bashrc 中吗?似乎有点儿太老套了。

sudo为我的一次性命令添加别名的正确方法是什么?

答案1

是的,添加该alias sudo='sudo '行将解决您的问题。为了更好地定义(来自bash 手册),

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

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

可以确定的一个方法是输入在终端窗口中

如果您这样做,更改就不是永久性的,它们只会存在直到您关闭/注销终端。

~/.bashrc我认为,就您而言,将更改添加到而不是会更安全/etc/bash.bashrc,但实际上并没有太大的区别。

答案2

尝试将别名添加到 ~/.bashrc,这是 bash 将针对每个用户查看的初始化文件。我认为编辑该文件将使别名成为系统范围的别名。

例如,在 ~/.bashrc 中,我会在大多数 Ubuntu 安装中设置以下 sudo apt-get 命令

alias apts='sudo apt-cache search'
alias apti='sudo apt-get install'
alias aptr='sudo apt-get remove'

您具体想为哪个命令创建别名?通常,别名是一种将长而复杂的命令变成简单的单词命令的方法。

另外,为什么您要尝试使用 sudo 执行通常不需要 sudo 的命令,例如 ls -la?我认为当您通过 sudo 运行命令时,它会更改可用的环境变量,因此这也可能是问题的一部分。

相关内容