我在我的 centos linux 机器上的 .bash_profile 非 root 帐户中设置了一个脚本,以在 sudo su 之后更改我的 PS1,但因为 sudo su 实际上是创建一个新会话,所以脚本当然会停止,并且我的 PS1 保持不变,尽管我的 .bash_profile是说要更改它,这里没有任何问题,但是在 sudo su 之后有没有任何方法可以执行命令(在我的例子中更改我的 PS1)?我尝试将脚本也放入 .bashrc 中,并且相同。
答案1
在我看来,堆叠sudo
会su
造成混乱。
对我来说,为 root 创建正确环境的最可靠方法,包括设置正确的 PATH 以及相关文件中的其他设置/root/
是sudo -i
请阅读手册页man su
和man sudo
因为 PATH 和其他会话和环境变量有很多微妙之处,可以更改或不默认更改或通过特定开关更改。
su -
请注意和之间的区别 su
,例如,通常将 sudo 配置/etc/sudoers
为抑制某些环境变量...
这张表(以及整篇文章)给出了乍一看似乎相似的命令的一些差异:
corrupted by user's
HOME=/root uses root's PATH env vars
sudo -i Y Y[2] N
sudo -s N Y[2] Y
sudo bash N Y[2] Y
sudo su Y N[1] Y
[1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
probably set by /etc/environment
[2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin