我注意到“screen”调用之前和之后的“env”存在差异,对于调用的内容(用于设置环境变量)是否有任何额外的说明?
我在“man screen”上快速搜索时看不到任何明确的解释
关于该主题的一些谷歌搜索查询:
http://alan.lamielle.net/2009/03/09/environment-variables-and-gnu-screen
我想一个更具体的子问题是,与正常登录相比,屏幕会话中未实例化的是什么?
答案1
进程从父进程继承环境变量,这意味着第一次调用screen
(创建新进程)时,它拥有父进程所有环境变量的副本。现在screen
调整/创建一些变量,例如COLUMNS
、LINES
、TERM
、TERMCAP
和。您还可以使用/调整或删除环境变量。WINDOW
STY
screenrc
setenv
unsetenv
在某些系统上,screen
是 setuid 或 setgid 以便更新utmp
和wtmp
;然后启动时会从环境中删除更多变量screen
,例如LD_LIBRARY_PATH
.
如果您附加到现有screen
会话,则不会复制您的环境变量,因为该screen
进程已经存在并且拥有自己的环境变量(从您之前启动该进程时开始)。这意味着您更改的环境变量在 screen 启动的进程中将不可见,因为它们是从具有旧环境变量的父进程复制的。