如何在切换 shell 的别名中获取新的 .bashrc?

如何在切换 shell 的别名中获取新的 .bashrc?

我有一个用于运行的别名,sudo -s名为ssu.我希望它也从.profile我的主目录中获取我的根会话。

其他答案似乎说这就是解决方案:

alias ssu='sudo -s && sudo -Hu root source /my_home/.profile'

source以 root 用户身份执行并不会使其成为配置文件我的壳。它在我之后运行命令登出我的根会话。

有没有一种方法可以连续无缝执行sudo -sand source(作为 root)而不必运行两个命令?

答案1

在 sudo 中运行的会话的所有变量的范围都在调用的生命周期内。别名中的内容是一个命令,sudo -s它将以 root 身份启动 shell。一旦退出该 shell,它将运行另一个命令sudo -Hu root source /my_home/.profile.即使它做了你认为它做了的事情(它没有),这将是第二次调用 sudo 并且这是一个单独的 shell 会话。

bash 中的命令source是内置命令,而不是可执行文件,因此 sudo 无法以 root 身份启动它。不过,您可以在 bash 命令中运行它。

也许你会得到最好的服务,比如

sudo -H bash —rcfile /my_home/.profile

相关内容