即使在 vnc 会话上使用“env -i”,gnome-terminal 也会继承一些环境

即使在 vnc 会话上使用“env -i”,gnome-terminal 也会继承一些环境

以某种方式,gnome-terminal 能够获得一些未在任何 shell 初始化文件中设置的环境(系统范围/用户级别)

env -i DISPLAY=":1.0" /usr/bin/gnome-terminal

$> env给出了许多其他变量,其中 xterm 只给出了如下几个变量

env -i DISPLAY=":1.0" /usr/bin/xterm
$> env
DISPLAY=:1.0
TERM=xterm
WINDOWID=37748770
XTERM_VERSION=X.Org 6.8.99.903(253)
XTERM_LOCALE=C
LOGNAME=bkatkam
XTERM_SHELL=/bin/csh
HOSTTYPE=x86_64-linux
VENDOR=unknown
OSTYPE=linux
MACHTYPE=x86_64
SHLVL=1
PWD=/home/bkatkam
USER=bkatkam
GROUP=inv
HOST=inv2

但是,这些将在新的 VNC 会话中得到清除。我怀疑,vnc 会话正在某处存储环境。我无法弄清楚它把它们存储在哪里。

我也经历过,csh:终端从未知位置继承环境变量,但是这个问题没有找到根本原因。

编辑: env -i在关闭所有打开的 gnome 终端后,命令现在提供了正确的环境。但如果我正常打开终端(没有env -i),不相关的环境就会被继承

答案1

经过调试,得知它 gnome-terminal从父Xvnc进程继承了环境

Xvnc依次从vncserver执行创建 VNC 的终端获取环境。所以,要保证VNC有一个干净的环境。我已经用命令创建了它

env -i PATH="/usr/bin:/bin" HOME="/home/bkatkam" vncserver -geometry 1920x1080

相关内容