当我通过 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
!