切换到非 root 用户时希望保留 bashrc 和 vimrc

切换到非 root 用户时希望保留 bashrc 和 vimrc

我在多用户系统上。我有 sudo b/c 我猜我有责任。有时,我想切换到另一个用户来帮助他们做某事,但我有一个被欺骗的 bashrc/vimrc,我想保留它们。

对于root来说,这非常简单。在我的.bashrc

alias sudo='sudo '
alias -- -i='bash --rcfile $HOME/.bashrc'
export HOME="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"

基本上,这意味着sudo -i让我 root,获取 my .bashrc,并保留 my $HOMEas/home/jeremy而不是/root,这意味着 vim 在正确的位置查找颜色和 rcfiles 等内容。

我想做一些与成为其他用户类似的事情。理想:

  • 来源我的 .bashrc;让vim使用我的 .vim/诸如此类vimrc的东西colors/

  • 不硬编码路径——在某些系统上我是jeremy;对别人来说我是jdr,等等。

  • 只需要最少的额外输入即可通过别名或功能来实现所有这些工作。

对于 root,我可以-i完全使用另一个命令来完成我想要的操作。 man bash没有列出任何以其他用户身份执行操作的选项。man sudo确实如此,但那样我就没有任何选择来获取.bashrc.su看起来很有希望,正如man su所说的,su -m保留环境并且不设置 USER 或 HOME,但我必须将sudo su -m我的 USER 设置为root.我无法添加使用&&或其他命令,因为我需要在新 shell 中运行命令,而不是在该 shell 退出后运行。简而言之,我所知道的命令都不能满足我的要求。

我能达到的最接近的是sudo -Esu user,它使我成为user并保留我导出的所有变量。我可以export x=". $HOME/.bashrc"在 my 中添加类似的内容.bashrc,然后eval $x当我成为 时user,但这会产生权限错误,并且设置 +x on.bashrc是不够的,因为我的主目录的默认权限阻止其他用户访问,而且我不确定我是否想要改变它,除非没有其他选择。并非所有我要成为的用户都拥有特权,所以我不能凭sudo自己的方式进入。

长话短说:成为另一个用户,同时保留当前用户的别名、函数、PS1、PROMPT_COMMAND 和 vim 配置。重击 4.2

相关内容