Linux 我给用户~/.bashrc添加了别名,但是“;sudo-u user-i';别名'”;仍然报告“;未找到命令”;?
作为一个简单的例子,在用户foo的~/.bashrc中有一个别名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函数的命令可以正常工作。有没有办法让别名也起作用?有一个很好的例子说明了如何做到这一点。将
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'