以某种方式,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