当从不同的会话中看到时,同一进程在 /proc/pid/environ 中有不同的环境变量。为什么?

当从不同的会话中看到时,同一进程在 /proc/pid/environ 中有不同的环境变量。为什么?

我正在检查在 vnc 会话内启动的 xterm 的 bash 进程的环境变量。

如果我通过运行 env 或 来检查 bash 会话本身的环境变量cat /proc/pid/environ | strings,它会显示我们执行 su 或 ssh 时通常设置的所有环境变量,即来自 /etc/profile 和 .bashrc 的环境变量。但是当我cat /proc/pid/environ | strings在腻子会话中进行操作时,它显示了完全不同的变量。

抛开为什么只设置那些特定的变量不谈,我想知道为什么当从不同的会话(如双缝实验)检查时,同一过程的环境会产生不同的结果。我知道 proc 不是真正的文件系统。但是当我查询它时到底发生了什么,所以 proc 不是检查远程进程环境的可靠方法吗?

我用手机写下了这个问题。所以,我没有任何示例输出可显示。但是,我希望你能明白我的问题。

答案1

这是我为测试所做的:

$export test=one
$vim test1

pid = 1200,使用 CTRL-Z 停止进程

$cat /proc/1200/environ | strings
test=one

现在进行第二个过程

$test=two
$vim test2

pid = 1201,使用 CTRL-Z 停止该进程

$cat /proc/1201/environ | strings
test=two

用户可能在运行程序之前更改了环境属性。

相关内容