我为用户〜/ .bashrc添加了别名,但是"sudo -u user -i'alias_name'"仍然报告"找不到命令"?

CAB*_*CAB 7 linux bash alias sudo

作为一个简单的例子,在用户foo的〜/ .bashrc中有一个别名;

alias ll='ls -l'
Run Code Online (Sandbox Code Playgroud)

使用sudo我可以看到别名已设置;

bar@laptop:~$ sudo -u foo -i alias ll
alias ll=`ls -l'
Run Code Online (Sandbox Code Playgroud)

但是,我实际上不能使用别名;

 bar@laptop:~$ sudo -u foo -i ll
 -bash: ll: command not found
Run Code Online (Sandbox Code Playgroud)

作为bash函数的命令工作正常.有没有办法让别名也起作用?

bri*_*ice 3

Archlinux wiki 中有一个很好的例子说明了如何做到这一点。将以下内容添加到您的 .bashrc

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

不要问我为什么它有效。我在我的手册页中搜寻过这个内容,但没有成功,但它从未让我失望过。

> sudo ll
total 60
drwxr-xr-x  2 brice users 4096 Feb  4 16:17 classes
drwxr-xr-x  3 brice users 4096 Mar  6 21:48 Desktop
drwx------  6 brice users 4096 Mar 28 21:32 Downloads
drwx------ 25 brice users 4096 Mar 29 21:20 Dropbox
drwxr-xr-x  2 brice users 4096 Mar 11 20:27 scripts
drwxr-xr-x  2 brice users 4096 Mar 19 21:59 tmp
Run Code Online (Sandbox Code Playgroud)