使用 env
命令可以查看系統(tǒng)當前的環(huán)境變量炒刁。有時候我們希望能夠查看一個處在運行狀態(tài)的進程的環(huán)境變量恩沽。
在 Linux 系統(tǒng)下面,進程的環(huán)境變量信息可以通過 /proc/<pid>/environ
文件查看:
$ cat /proc/<pid>/environ
該命令的輸出格式不太容易讀翔始,所有的信息擠在了同一行罗心。使用 tr
命令將空字符替換為換行符,將會使所有的環(huán)境變量按行顯示:
$ cat /proc/<pid>/environ | tr \\0 \\n
在 Mac OSX 系統(tǒng)下面城瞎,可以使用下面的命令渤闷,其中的 -E
選項表示打印進程的環(huán)境變量:
$ ps -p <pid> -wwwE
不過上面提到的方法并沒有覆蓋到所有的情況。進程的環(huán)境變量來自于兩部分:進程初始化時由加載器載入的環(huán)境變量(來自于系統(tǒng)脖镀、父進程或者 exec
系統(tǒng)調用的參數(shù))飒箭;和進程執(zhí)行過程中由 setenv
函數(shù)動態(tài)設置或修改的環(huán)境變量。前面的命令僅會顯示第一部分的環(huán)境變量蜒灰。
進程的環(huán)境變量保存在全局變量 char **__environ
中弦蹂。要想顯示由進程動態(tài)修改的環(huán)境變量,首先必須有這個進程的符號表强窖,然后通過 ptrace
系統(tǒng)調用(比如使用 gdb)來查看凸椿。