Bash

當從不同的會話中看到時,同一程序在 /proc/pid/environ 中具有不同的環境變數。為什麼?

  • January 4, 2018

我正在檢查在 vnc 會話中啟動的 xterm 的 bash 程序的環境變數。

如果我通過執行 env 或 檢查 bash 會話本身cat /proc/pid/environ | strings的環境變數,它會顯示在我們執行 su 或 ssh 時通常會設置的所有環境變數,即來自 /etc/profile 和 .bashrc。但是當我cat /proc/pid/environ | strings從膩子會話中進行操作時,它會顯示完全不同的變數。

撇開為什麼只設置那些特定的變數不談,我想知道為什麼同一過程的環境在從不同的會話(如雙縫實驗)中檢查時會產生不同的結果。我知道 proc 不是真正的文件系統。但是當我查詢它時到底發生了什麼,所以 proc 不是檢查遠端程序環境的可靠方法嗎?

我用手機寫了這個問題。所以,我沒有任何範例輸出要顯示。但是,我希望你能得到我的問題。

這是我為測試所做的:

$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

使用者可能在執行程序之前更改了環境屬性。

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