在 CentOS(或者其他 Linux 发行版)里,env 相关的变量调试通常分几种情况:Shell 环境变量、系统/服务环境变量、以及程序运行时的环境。下面按常见场景给你一套实用方法。
env
或
printenv
echo $PATH
printenv PATH
set
只有 export 的变量才会进 env
VAR=123
env | grep VAR # 查不到
export VAR=123
env | grep VAR # 能查到
调试技巧:
export -p
查看当前已导出的变量
#!/bin/bash
set -x
运行:
bash -x script.sh
可以看到每一行执行前的变量展开结果。
env
echo "PATH=$PATH"
~/.bashrc 里设置,但程序不是交互 Shell 启动sudo env
对比
env
允许保留环境:
sudo -E command
或编辑:
visudo
添加:
Defaults env_keep += "PATH MY_VAR"
查看服务环境:
systemctl show my-service | grep Environment
在服务文件中设置:
[Service]
Environment=MY_VAR=123
或:
EnvironmentFile=/etc/sysconfig/myapp
调试服务启动环境:
systemctl status my-service
journalctl -u my-service
MY_VAR=test command
只对该命令生效。
例如:
DEBUG=1 python app.py
export~/.bashrc 还是 ~/.bash_profile如果你有具体场景(比如:Python 看不到变量 / systemd 服务 / Docker / crontab),可以直接说,我可以给你更针对性的调试步骤。