Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我给用户~/.bashrc添加了别名,但是“;sudo-u user-i';别名'”;仍然报告“;未找到命令”;?_Linux_Bash_Alias_Sudo - Fatal编程技术网

Linux 我给用户~/.bashrc添加了别名,但是“;sudo-u user-i';别名'”;仍然报告“;未找到命令”;?

Linux 我给用户~/.bashrc添加了别名,但是“;sudo-u user-i';别名'”;仍然报告“;未找到命令”;?,linux,bash,alias,sudo,Linux,Bash,Alias,Sudo,作为一个简单的例子,在用户foo的~/.bashrc中有一个别名 alias ll='ls -l' 使用sudo可以看到别名已设置 bar@laptop:~$ sudo -u foo -i alias ll alias ll=`ls -l' 但是,我实际上不能使用别名 bar@laptop:~$ sudo -u foo -i ll -bash: ll: command not found bash函数的命令可以正常工作。有没有办法让别名也起作用?有一个很好的例子说明了如何做到这一点。将

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

alias ll='ls -l'
使用sudo可以看到别名已设置

bar@laptop:~$ sudo -u foo -i alias ll
alias ll=`ls -l'
但是,我实际上不能使用别名

 bar@laptop:~$ sudo -u foo -i ll
 -bash: ll: command not found

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

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

alias sudo="sudo "
别问我为什么它会起作用。我已经搜索了我的手册页寻找这个没有运气,但它从来没有让我失望

> 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
尝试:

确保添加

alias sudo='sudo '
然后继续添加您的自定义别名。。。例如,如果需要常规命令

sudo rm ~/qwerty/removethis.txt
上述命令的别名如下所示

alias your_custom_alias='sudo rm ~/qwerty/removethis.txt'

这适用于本地登录的“foo”,但不适用于试图“su-u foo”的用户“bar”。@CAB:Gor链接的文章解释了原因。只有当第一个别名命令后面的参数也是别名时,尾随空格技巧才有帮助。如果您说
sudo-i ll
,Bash会看到
-i
不是别名,因此它会停止扩展别名并执行生成的命令。您可能需要将第二个别名转换为脚本或shell函数,以获得所需的行为。
alias your_custom_alias='sudo rm ~/qwerty/removethis.txt'