在 Debian(以及大多数 Linux 系统)中,env 显示为空通常有几种常见原因。下面按最常见 → 较少见的顺序说明,并给出排查方法。
env
却什么都没有输出。
env 默认只打印当前进程的环境变量。
如果当前 shell 或进程本身没有任何环境变量,env 就会显示为空。
常见触发场景:
env -i(清空环境)echo $PATH
echo $HOME
如果也是空,说明确实没有环境。
su 或 sudo 下,环境被清空su
env
su(不加 -)不会加载用户环境sudo 默认会重置部分环境变量su -
# 或
sudo -i
sh -c 'env'
或:
crontab
~/.bashrc~/.profile/etc/profile所以环境很干净。
env 的“错误理解”“env 应该显示系统所有变量”
其实:
env ≠ setenv:只显示导出的环境变量set:显示 shell 变量 + 环境变量var=123
env | grep var # 空
set | grep var # 有
可能原因:
docker run --env-file 为空Environmentsource 任何配置# 1. 是否有基本变量
echo $PATH
echo $USER
echo $HOME
# 2. 对比 env / set
env
set | head
# 3. 是否处于干净环境
env -i bash -c 'env'
如果你愿意,可以告诉我:
我可以更精确地判断是哪一种情况。