温馨提示×

centos env如何调试变量

小樊
60
2026-09-27 10:31:08
栏目: 智能运维

在 CentOS(或者其他 Linux 发行版)里,env 相关的变量调试通常分几种情况:Shell 环境变量、系统/服务环境变量、以及程序运行时的环境。下面按常见场景给你一套实用方法。


一、查看当前环境变量

1. 查看所有环境变量

env

或

printenv

2. 查看某个变量

echo $PATH
printenv PATH

3. 查看 Shell 变量(包括非导出的)

set

二、确认变量是否“导出”

只有 export 的变量才会进 env

VAR=123
env | grep VAR      # 查不到

export VAR=123
env | grep VAR      # 能查到

调试技巧:

export -p

查看当前已导出的变量


三、调试脚本中的 env 变量

1. 在脚本开头打开调试

#!/bin/bash
set -x

运行:

bash -x script.sh

可以看到每一行执行前的变量展开结果。


2. 在脚本中打印环境

env
echo "PATH=$PATH"

四、调试“程序看不到环境变量”的问题

常见原因

  • 在 ~/.bashrc 里设置,但程序不是交互 Shell 启动
  • systemd 服务不读取 bash 配置
  • sudo 默认会清空环境

1. sudo 环境问题

sudo env

对比

env

允许保留环境:

sudo -E command

或编辑:

visudo

添加:

Defaults env_keep += "PATH MY_VAR"

2. systemd 服务调试

查看服务环境:

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
  • [ ] 是否非交互 Shell(cron / systemd)
  • [ ] 是否被 sudo 清除
  • [ ] 是否拼写错误(大小写敏感)

如果你有具体场景(比如:Python 看不到变量 / systemd 服务 / Docker / crontab),可以直接说,我可以给你更针对性的调试步骤。

0 踩