在我的工作中,我们需要在多台 RHEL 服务器上与多人合作。
我总是以普通用户身份登录 Linux 服务器(废话)。假设我在我的.bashrc
文件中添加了额外的函数/别名。.bashrc
当我提升到 root 用户时,有什么方法可以保留我的权限吗?也许通过在我的命令/别名中添加一个命令/别名来在我更改时.bashrc
获取我的原始用户?.bashrc
执行此操作的最佳方法是什么。不会对其他登录用户造成问题。
因此,请登录为user1
,执行sudo su -
,但保留 的别名和功能user1
。
答案1
如果您使用本地帐户,请将其添加到 root bashrc...
if [ -n "$SUDO_USER" ]; then
OLDHOME="$( getent passwd "$SUDO_USER" | cut -f 6 -d':' )"
if [ -f "${OLDHOME}/.bashrc" ]; then
source "${OLDHOME}/.bashrc"
fi
fi
根据您想要的行为,在已经存在的定义之前或之后。
答案2
在我的系统上,您只需使用sudo -s
.它会给你一个根 shell,但不会更改目录$HOME
- 因此对于bash
shell,你将调用自己的 shell $HOME/.bashrc
。 ($HOME
简单的设置sudo -s
是 中的一个可配置选项/etc/sudoers
,因此对您来说可能会有所不同。尝试比较sudo -s
和sudo -sH
。如果它们不同,它将适合您,但如果它们给出相同的结果,您将需要不同的解决方案.)
我向每个 以及它们已经存在于我自己的帐户和根帐户的位置添加了这样的行~/.bashrc
,编辑文本,以便~/.profile
每次根据文件名进行适当的替换:~/.bash_profile
.bash_profile
test -t 2 && echo "> This is $HOME/.bash_profile for ${USER:-unknown}" >&2
以我身份登录 ( roaima
):
sudo -s
>> This is /home/roaima/.bashrc for root
# _
再次回到我(roaima
):
sudo -sH
>> This is /root/.bashrc for root
roaima
最后再一次回到我( ):
sudo -i
>> This is /root/.profile for root
>> This is /root/.bashrc for root
# _