如何为sudo命令别名?

Rya*_*son 5 linux sudo shell

我有一个别名,我想通过 sudo 作为普通用户和 root 用户使用它。具体来说,是这样的:

alias rm=trash
Run Code Online (Sandbox Code Playgroud)

这作为普通用户工作正常,当我sudo -i用来获取 root shell 提示时它工作正常,但如果我使用sudo rm,则别名不适用。那么我需要在哪里放置我的别名以便它在一次性 sudo 命令中工作?

Dar*_*idl 11

为 sudo 创建一个别名,末尾有一个空格:

alias sudo='sudo '
Run Code Online (Sandbox Code Playgroud)

然后所有其他别名将与 sudo 一起使用。

但是就像在另一个答案中提到的那样,rm执行别名trash可能是一个坏主意。我喜欢做的是rm像这样“禁用” :

alias rm='echo "rm is disabled, use trash or /bin/rm instead."'
Run Code Online (Sandbox Code Playgroud)

有了这个,你很快就会养成打字trash而不是rm.


Den*_*son 1

这是行不通的,但是如果你使用一个函数并导出它,它就可以了。

dl () { trash "$@"; }
export -f dl
Run Code Online (Sandbox Code Playgroud)

使用别名是一个坏主意rm,因为如果您养成了使用别名或函数保护您的习惯,并且在某些时候由于某种原因别名不可用,那么您使用rm它会删除一堆难以恢复的内容。