更改为 root 时如何使用不同的 shell

更改为 root 时如何使用不同的 shell

我的用户 shell 中有一些个人设置,例如:.vimrc.bash_profile其他内容。

是否可以切换到 root 使用su -但同时使用我的用户的配置文件?

答案1

指示-获取su目标用户的配置文件和环境。如果您想保留旧环境(即您的用户环境),只需省略-并仅使用su.当然,根用户特有的任何路径组件将不存在,并且必须手动添加。

答案2

su -意思是“切换到 root,并将其作为登录 shell 运行”(也称为su -lsu --login)。

现在,即使没有-变量$HOME也会被设置,因此$HOME/.vimrc将指向root版本。

我们需要的是--preserve-environment选择。

su --preserve-environment

这将运行 root shell,但将保持$HOME不变,并将运行您自己的 shell(例如,如果您使用kshzsh)并将运行您的点文件

例如

$ su --preserve-environment  
Password: 
# id
uid=0(root) gid=0(root) groups=0(root)
# echo $HOME
/home/sweh
# echo $0
ksh
# 

答案3

您可以将其插入 root.bash_profile.bashrc任何更方便且可用的位置。

profile=anand # let's assume this is your user name
myorigusername=$(who am i | awk {'print $1'})
if [ "${myorigusername}" = "${profile}" ]
then
  cd ~${myorigusername}
  . ./.vimrc
  . ./.bash_profile
  # other stuff here
fi 

如果您需要任何解释,请询问,或者更好的是,在您的系统上进行测试。

相关内容