我正在运行 OpenSuse 12.1 KDE。我之前运行的是 Ubuntu。在 Ubuntu 中,有一个超级用户选项 ( sudo -s
),用于保留原始用户的HOME
环境变量(还有另一个选项,sudo -i
,用于设置目标用户的HOME
环境变量)。
我希望在 OpenSuse 中拥有相同的功能。但是,默认情况下,su
我sudo
尝试过的每个变体都会将HOME
环境变量设置为目标用户的值。
有人能给我提供实现以下任一变体(即别名或类似的东西)的精确步骤吗su
:sudo
- 保留原始用户的
HOME
环境变量 - 将原始用户的
PATH
环境变量与目标用户的PATH
环境变量结合起来 - 否则,工作方式与
sudo -s
在 Ubuntu 或su
OpenSuse 中类似。
我希望尽可能少地更改默认配置,并且希望能提出一个脚本来实现这个小更改,以便当我升级时,我可以以最小的中断/努力恢复我的配置。
答案1
您可以在命令行上将环境变量传递给 sudo 环境:
sudo env HOME=$HOME PATH=$PATH <command>
因为变量替换首先发生,所以变量的当前版本在命令行上被替换,然后env
在新环境中使用该命令运行,然后<command>
执行。
然而,这不符合您合并路径的第二个标准,但您可以将其包装在脚本中,并将您想要的路径准确传递到环境中sudo
。系统级路径不会发生太大变化,尤其是考虑到您尽可能保留原始路径的方法。因此,在您的脚本中,您可以设置一个新的路径变量,然后转到 sudo:
#!/bin/bash
PATH2=$PATH:/usr/sbin:/sbin
sudo env PATH=$PATH2 HOME=$HOME $@
也许可以将其称为“mysudo”,您甚至可以在 bash 配置文件中sudo
使用别名mysudo
,这样您的打字肌肉记忆sudo
仍然有效。