在 CentOS(以及一般 Linux)里,**env 相关的“变量”**通常指 环境变量。调试环境变量一般从「查看、追踪来源、运行时验证」三个方面入手。下面按实用场景给你一个清晰清单。
env
或
printenv
echo $PATH
printenv PATH
set
✅
env只显示已导出为环境变量的
✅set显示所有 shell 变量
export | grep PATH
如果看不到,说明只是 shell 变量,没导出:
MYVAR=123
echo $MYVAR # 有值
env | grep MYVAR # 没有
导出:
export MYVAR
按顺序检查(非常重要):
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
~/.profile
还有:
/etc/profile.d/*.sh
grep -R "JAVA_HOME" /etc ~/.bash*
改了文件没重新登录
source ~/.bashrc
或重新开 terminal
用错了 shell
echo $SHELL
~/.bashrc~/.zshrccron / systemd 没有环境
.bashrc#!/bin/bash
set -x
env
bash -c 'echo $MYVAR'
如果为空,说明没 export。
systemctl show myservice | grep Environment
[Service]
Environment=MYVAR=123
或:
EnvironmentFile=/etc/sysconfig/myservice
✅ 不确定变量有没有:
printenv VAR || echo "NOT SET"
✅ 临时调试:
VAR=test command
✅ 查看进程真实环境:
cat /proc/<pid>/environ | tr '\0' '\n'
如果你愿意,可以告诉我:
PATH、JAVA_HOME、LD_LIBRARY_PATH)我可以直接帮你定位问题。