bash 别名不能通过 sudo 延续

bash 别名不能通过 sudo 延续

我很好奇,当我使用 sudo 程序时,是否有办法让我的 .bash_profile 正常工作。

例如,我将其设置为alias emerge='emerge -av',以便我可以安装软件,并且它会在下载和安装之前始终询问我是否要继续。但是我刚刚注意到,当我 时sudo emerge foo,它默认为纯命令,emerge foo而不是emerge -av foo

唯一能想到的解决办法就是将别名也放在 root 的 .bash_profile 中,但我不想诉诸于此,因为当我想向自己的配置文件添加内容时,我总是必须在两个地方进行更改。

还有其他我不熟悉的解决这个问题的方法吗?

答案1

在 Bash 中,

alias sudo='sudo '

将导致 bash 扩展所有在其后出现的别名sudo

答案2

另一种方法(尽管一个特定的例子(我推荐 Grawity 的答案)是使用-E标志 sudo 来继承环境。

   -E          The -E (preserve environment) option will override the
               env_reset option in sudoers(5)).  It is only available when
               either the matching command has the SETENV tag or the
               setenv option is set in sudoers(5).

相关内容