别名或 nano -B 无法使用 sudo 工作

别名或 nano -B 无法使用 sudo 工作

我设置了一个别名

alias nano='nano -B'

以便在文件更改时始终进行备份。

/home/<USER>/.bashrc我在和 中都这样做过/root/.bashrc

如果我使用,它会起作用

nano someFile

要么作为,<USER>要么root

但是当我使用

sudo nano someFile

因为<USER>没有备份。(我希望someFiles~在同一个文件夹中找到)

我还需要添加其他.bashrc内容吗?sudoalias

答案1

您的用户 ID 别名不能通过sudo

  • 您可能想或不想使用评论中链接的技巧。

  • 可能有理由不使用别名或使用其他别名root

    这些别名可以存储在您已经知道的位置。它们可以在您在 root 提示符下/root/.bashrc以交互方式运行时使用#

      sudo -i  # activates root's aliases
    

但在命令行中跟上别名时它们不会被激活

    sudo -i <specific alias>  # does not activate root's aliases
    sudo -H <specific alias>  # does not activate root's aliases

例子:

$ LANG=C sudo -i

root@xenial32:~# alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'

root@xenial32:~# grep -e ^alias -e \ alias /root/.bashrc
# enable color support of ls and also add handy aliases
    alias ls='ls --color=auto'
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

使用 的root别名之一

root@xenial32:~# l
bin@  extractor.log  logfile.tar  mkusb.log

root@xenial32:~# exit
logout

sudodus@xenial32 ~ $ LANG=C sudo -i l
-bash: l: command not found

[127] sudodus@xenial32 ~ $ LANG=C sudo -H l
sudo: l: command not found

[1] sudodus@xenial32 ~ $ LANG=C sudo -i alias
sudodus@xenial32 ~ $ 

我不会使用,alias sudo='sudo -i'因为

  • 存在风险,您可能会忘记自己拥有超级用户权限,并可能执行只能使用普通权限执行的操作。换句话说,我认为这违背了sudo始终进入 root 提示符的目的

  • 别名在命令行上不起作用sudo -i <specific alias>

  • sudo使用文本模式命令的标准设置通常很有效

  • 对于 GUI 命令我建议sudo -Hgksudo

相关内容