系统的环境变量
使用 env
或者 set 命令可以查看系统当前的环境变量;
进程的环境变量
在 Linux 系统下面,进程的环境变量来自于两部分:
1)进程初始化时由加载器载入的环境变量(来自于系统、父进程或者 exec 系统调用的参数)
2)和进程执行过程中由 setenv 函数动态设置或修改的环境变量。
初始化时载入的环境变量
进程初始化时由加载器载入的环境变量信息可以通过 /proc/<pid>/environ 文件查看:
$ cat /proc/<pid>/environ
该命令的输出格式不太容易读,所有的信息挤在了同一行。使用 tr 命令将空字符替换为换行符,将会使所有的环境变量按行显示:
$ cat /proc/<pid>/environ | tr "\\0" "\\n"
或者
$ cat /proc/<pid>/environ | tr '\0' '\n'
执行过程中设置的环境变量
进程的环境变量保存在全局变量 char **__environ
中。要想显示由进程动态修改的环境变量,首先必须有这个进程的符号表,然后通过 ptrace
系统调用(比如使用 gdb)来查看。
比如 gbd -p PID 进入后,使用set environment 就可以在GDB内设置环境变量;同样的,使用show environment 就可以查看环境变量~