环境变量需用export导出才可被子进程继承:export VAR="value"(或先赋值再export VAR);仅赋值VAR="value"仅为局部变量,子进程不可见。

在 Linux 中,声明和使用 Shell 环境变量的关键在于区分“普通变量”和“环境变量”,并理解 export 的作用——只有导出后的变量才能被子进程继承。
如何声明一个环境变量(临时生效)
直接赋值只是创建局部变量,必须用 export 才能变成环境变量:
-
正确写法(带 export):
export MY_VAR="hello"—— 此时MY_VAR对当前 Shell 及后续启动的命令(如python3 script.py)都可见。 -
错误写法(不加 export):
MY_VAR="hello"—— 这只是一个 Shell 内部变量,env | grep MY_VAR查不到,子进程也读不到。 - 也可以分两步:
MY_VAR="hello"→export MY_VAR,效果相同。
如何让环境变量永久生效
临时设置重启就失效。要永久生效,需写入 Shell 的配置文件:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 对当前用户有效:写入
~/.bashrc(bash)或~/.zshrc(zsh),然后执行source ~/.bashrc重载; - 对所有用户有效(需 root 权限):写入
/etc/environment或/etc/profile.d/myenv.sh; - 注意:不要在
/etc/environment中用export,它只认KEY=VALUE格式;而.bashrc中推荐用export KEY=VALUE。
怎么查看和验证环境变量
确认变量是否已生效,有几种常用方式:
-
echo $MY_VAR—— 显示变量值(注意$符号不能漏); -
printenv MY_VAR或env | grep MY_VAR—— 专门查环境变量(比echo更可靠,可排除局部变量干扰); -
env—— 列出所有当前生效的环境变量; - 在子进程中验证:
bash -c 'echo $MY_VAR'—— 如果输出为空,说明没正确 export。
常见操作与注意事项
实际使用中容易忽略几个关键点:
-
PATH 追加路径:
export PATH="$PATH:/my/tool/bin"—— 用双引号包裹,避免空格或变量未定义导致截断; -
删除环境变量:
unset MY_VAR—— 注意这不会影响配置文件,仅当前会话失效; -
变量名习惯:环境变量通常全大写(如
EDITOR、HTTP_PROXY),普通变量建议小写,便于区分; -
等号两侧不能有空格:
export VAR = value是语法错误,必须写成export VAR=value。

















