当我在终端上工作并使用su
或sudo
执行具有root用户权限的命令时,是否可以应用存储在该用户主目录中的“非root用户”(我正在从其中调用su
或sudo
)的配置?
例如,考虑(要以非root用户身份登录)我想/etc/some_file
使用编辑配置文件vim
,而我的vim配置文件位于/home/myuser/.vimrc
。打开命令行并输入sudo vim /etc/some_file
,我希望“我的”外观漂亮且配置vim
正确。但是我得到的是vim
默认配置的丑陋,没有插件等。
我可以制作su
或sudo
使用用户的配置文件,而不是/ root上的root用户文件吗?
使用sudo -E
保护您的环境:
$ export FOO=1
$ sudo -E env | grep FOO
FOO=1
这将保留$HOME
您拥有的所有其他环境变量,因此,以root身份运行的程序将访问开始时使用的相同配置文件。
您可以更新sudoers
以禁用该env_reset
设置,该设置将清除所有环境变量,并且通常默认情况下处于启用状态。您可能还必须启用sudo -E
所有在此使用的功能。还有一些其他sudoers
可能相关的设置:env_keep
,可让您指定默认情况下要保留的特定变量env_remove
,而则声明要始终删除的变量。您可以使用sudo sudo -V
查看/保留哪些变量。
如果您不能修改sudoers
,则另一种方法是显式提供您的环境:
sudo env HOME=$HOME command here
您可以创建一个shell别名来自动执行此操作,因此不必键入它。
请注意,这样做(两种方式)都可能会产生有害的副作用:例如,如果您运行的程序试图在主目录中创建文件,则这些文件将被创建为root用户,而普通用户将无法写入给他们。
对于的特定情况vim
,如果您是该系统的唯一用户,也可以将其.vimrc
作为系统范围的/etc/vimrc
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句