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

Kev*_*Lee 9 gnu-screen environment-variables

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

我无法从“人屏”上的快速搜索中看到任何明确的解释

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

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

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

Ulr*_*gel 11

一个进程从父进程继承环境变量,这意味着你第一次调用screen(创建一个新的)它有一个父进程的所有环境变量的副本。现在screen调整/创建像一些变数COLUMNSLINESTERMTERMCAPWINDOWSTY。您还可以screenrc使用setenv/调整或删除环境变量unsetenv

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

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