Terminal

即使在 vnc 會話中使用“env -i”,gnome-terminal 也會繼承一些環境

  • November 3, 2017

不知何故,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 session 正在某個地方儲存環境。我無法弄清楚它儲存它們的位置。

我也經歷過,csh:終端從未知位置繼承環境變數,但是在這個問題中沒有找到根本原因。

編輯: env -i在關閉所有打開的 gnome 終端后,命令現在提供了適當的環境。但是如果我正常打開終端(沒有env -i),無關的環境會被繼承

調試後,知道 從它的父程序gnome-terminal繼承環境Xvnc

Xvnc反過來,從vncserver執行創建 VNC 的終端獲取環境。所以,要保證VNC環境乾淨。我用命令創建了它

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

引用自:https://unix.stackexchange.com/questions/400329