在 Linux 中设置一个全局环境变量,该变量在 root 权限下有效

在 Linux 中设置一个全局环境变量,该变量在 root 权限下有效

当我通过 SSH 进入 Linux 机器时,我希望文件将/etc/profile命令的结果保存whoami到全局环境变量中。

如果我使用命令 转为 root 权限sudo su -,我不希望在转为 root 权限时再次运行该命令。我希望它使用 的结果以及我转为 root 权限之前的常规用户名,并且需要以 root 用户身份访问该变量,即使它在我转为 root 权限时whoami会再次运行该文件。/etc/profile

我该怎么做才能在/etc/profile命令中只运行一次该命令?

答案1

在登录 shell 之后保留环境变量需要-m开关。保留 sudo 之后的环境变量需要更改为环境保持/etc/sudoers即便如此,这样做仍然不太可靠。

幸运的是,还有其他方法可以解决这个问题。例如,您的 tty 由您最初登录的用户拥有。因此,将其添加到 /etc/profile 的末尾:

TTY=$(tty)
if [ -n "$TTY" ]; then
    WHOAMI=`ls -al $TTY | awk '{print $3}'`
fi

您将 WHOAMI 变量设置为 tty 的所有者(如果有),通过 sudo 和非 sudo su 到 root:

[corman@localhost ~]$ sudo su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]# logout
[corman@localhost ~]$ su -
Password:
[root@localhost ~]# echo $WHOAMI
corman
[root@localhost ~]#

答案2

您也可以使用logname来代替whoami

相关内容