有没有办法运行类似的方法来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
为什么不在.profile
root 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:
#