以 root `su -l` 身份获取登录 shell,无需更改目录

以 root `su -l` 身份获取登录 shell,无需更改目录

有没有办法运行类似的方法来su -l读取所有登录 shell 文件但不更改您所在的目录?

出于某种动机,我正在尝试创建一个 Slackware Linux 软件包。大多数时候,如果您只使用su.但是,有一些类似的软件包sbcl依赖于TeX工具,如果没有su -l.我更喜欢su在可以摆脱它的情况下使用它,因为它不会更改当前目录。

如果我在一个像~/opt/haskell-stack-slackbuild.

$ pwd
/home/<user>/opt/haskell-stack-slackbuild

如果我只是运行,su我会回到同一个目录,但如果我运行,su -l那么无论我在哪里,我都会掉入其中/root,并且必须导航回我正在工作的目录。

$ su -l
# pwd
/root

答案1

为什么不在.profileroot shell 中运行后直接获取 root 的源代码呢?

$ su
Password: 
# . ~root/.profile
# 

当然,您可以在 root shell 中从任何地方获取任何脚本,从而以任何必要的方式修复或更改 root shell 环境。

有很多方法可以使用su在命令行上接受“shell 参数”这一事实,直接从原始 shell 将不同的设置注入到根 shell 中。下面是一个示例,它为su命令提供了运行 root shell 的指令,以这种方式获取 root 的配置文件,然后使用该配置文件中的环境启动一个 shell(由于 ,它exec取代了由 启动的 shell su):

$ su -- root -c ". /root/.profile; exec /bin/sh" 
Password: 
# 

相关内容