使用 sudo 时是否尊重别名?

使用 sudo 时是否尊重别名?

我在我的 中设置了两个别名.bash_profile。我想同时sudo使用它们两个:

$ cat ~/.bash_profile
export EDITOR=emacs
...
alias yum="dnf"
alias ssh="ssh -2"
...

我知道如何告诉sudo尊重我的环境(-E),但我找不到别名的选项。在手册页中搜索alias结果是Pattern not found

我该如何表示sudo对别名的尊重?

提前致谢。


我试图避免由于 Fedora 更改命令而出现的这些烦人的消息:

$ sudo yum update
[sudo] password for: 
Yum command has been deprecated, redirecting to '/usr/bin/dnf update'.
See 'man dnf' and 'man yum2dnf' for more information.
...

答案1

sudo 不能真正“尊重”别名,因为它们是 shell 特有的功能 - 只有当 sudo 被教会如何自己读取~/.bashrc, ~/.zshrc, ... 时,它才能知道它们。~/.cshrc

对于普通别名,你可以欺骗 shell 本身在后面跟着时扩展它们sudo

alias sudo="sudo "

(它在某处有记录。)

但对于功能而言,没有类似的东西;您必须使用交互sudo -sE模式。

答案2

解决您的问题的另一种可能方法是将您的别名像往常一样放在文件中/home/YourName/.bash_aliases,然后将该文件链接到 root 的主目录中:

      sudo ln -s /home/YourName/.bash_aliases /root/.bash_aliases

应该自动运行,因为大多数发行版.bashrc默认在文件中有这些行,

      if [ -f ~/.bash_aliases ]; then
          . ~/.bash_aliases
      fi

如果您没有,可以轻松添加它们。

相关内容