我有一个用于运行的别名,sudo -s
名为ssu
.我希望它也从.profile
我的主目录中获取我的根会话。
其他答案似乎说这就是解决方案:
alias ssu='sudo -s && sudo -Hu root source /my_home/.profile'
但source
以 root 用户身份执行并不会使其成为配置文件我的壳。它在我之后运行命令登出我的根会话。
有没有一种方法可以连续无缝执行sudo -s
and 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
?