温馨提示×

linux进程环境变量在哪

小樊
33
2026-09-18 15:29:47
栏目: 智能运维

在 Linux 中,进程的环境变量主要来自内核在创建进程时传入的 环境块(environment block),不同场景下查看位置如下:


一、进程启动时的环境变量来源

1. 进程自身的内存空间(最准确)

每个进程的环境变量保存在自己的地址空间中,通常通过:

  • main(int argc, char *argv[], char *envp[])
  • environ 全局变量访问

示例(C):

extern char **environ;

二、在 Shell 中查看

当前 Shell 的环境变量

env
# 或
printenv

查看某个变量

echo $PATH

三、查看「正在运行的进程」的环境变量

方法 1:通过 /proc(最常用)

cat /proc/<pid>/environ

环境变量以 \0 分隔,可读格式:

tr '\0' '\n' < /proc/<pid>/environ

示例:

tr '\0' '\n' < /proc/1234/environ

方法 2:ps(有限)

ps e -p <pid>

四、环境变量的“来源文件”(进程启动前)

不同进程的初始环境变量来自不同地方:

1. 登录 Shell

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/environment

2. systemd 服务

  • /etc/systemd/system/<service>.service 中:
    Environment=KEY=value
    EnvironmentFile=/etc/sysconfig/xxx
    

3. 容器 / Docker

  • DockerfileENV
  • docker run -e KEY=value

五、总结一句话

Linux 进程的环境变量在 /proc/<pid>/environ,来源于启动它的父进程和配置文件。

如果你有具体场景(比如:某个服务环境变量不对、Docker、systemd、Java 进程等),可以告诉我,我可以更针对性说明。

0