“屏幕”如何影响环境变量?

“屏幕”如何影响环境变量?

我注意到“screen”调用之前和之后的“env”存在差异,对于调用的内容(用于设置环境变量)是否有任何额外的说明?

我在“man screen”上快速搜索时看不到任何明确的解释

关于该主题的一些谷歌搜索查询:

http://alan.lamielle.net/2009/03/09/environment-variables-and-gnu-screen

https://superuser.com/questions/105954/updating-screen-session-environment-variables-to-reflect-new-graphical-login

我想一个更具体的子问题是,与正常登录相比,屏幕会话中未实例化的是什么?

答案1

进程从父进程继承环境变量,这意味着第一次调用screen(创建新进程)时,它拥有父进程所有环境变量的副本。现在screen调整/创建一些变量,例如COLUMNSLINESTERMTERMCAP和。您还可以使用/调整或删除环境变量。WINDOWSTYscreenrcsetenvunsetenv

在某些系统上,screen是 setuid 或 setgid 以便更新utmpwtmp;然后启动时会从环境中删除更多变量screen,例如LD_LIBRARY_PATH.

如果您附加到现有screen会话,则不会复制您的环境变量,因为该screen进程已经存在并且拥有自己的环境变量(从您之前启动该进程时开始)。这意味着您更改的环境变量在 screen 启动的进程中将不可见,因为它们是从具有旧环境变量的父进程复制的。

相关内容