export var_name="value"是最基础写法,等号两侧不可有空格,引号在含空格或特殊字符时必需;设置后仅当前终端及子进程有效,关闭终端即失效。

临时环境变量只在当前终端会话中有效,关掉终端就消失,不用改任何文件,直接用 export 就行。
怎么用 export 设置一个新变量
最基础的写法就是 export VAR_NAME="value"。注意等号两边不能有空格,引号可选(但含空格或特殊字符时必须加)。
-
export MY_APP_HOME="/opt/myapp"—— 设置一个自定义路径变量 -
export DEBUG=1—— 设置开关类变量,很多程序会读这个 -
export PS1="\u@\h:\w\$ "—— 修改命令行提示符(仅当前 shell 生效)
设置完后用 echo $VAR_NAME 验证,比如 echo $MY_APP_HOME 应该输出 /opt/myapp。
怎么安全地追加路径到 PATH
别直接覆盖 PATH,否则系统命令可能找不到。正确做法是引用原值再拼接:
-
export PATH=$PATH:/opt/myapp/bin—— 把新目录加到末尾 -
export PATH=/opt/myapp/bin:$PATH—— 加到开头(优先级更高,适合覆盖系统同名命令)
执行后立刻生效,which myapp 或 command -v myapp 能验证是否识别成功。如果报 command not found,大概率是路径写错、权限不足,或二进制文件根本不存在。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
为什么 export 后子进程能继承,但新终端不能
因为环境变量是“进程级”的:父进程用 export 设置后,fork 出的子进程自动继承;但新开终端是全新登录 shell 进程,不和旧终端共享内存或环境空间。
- 在当前终端运行
bash再echo $VAR_NAME,能看到变量 —— 因为是子 shell - 另开一个终端窗口,
echo $VAR_NAME输出为空 —— 因为是独立进程 - 关闭当前终端,所有 export 设置全部丢失,不残留
这点容易被忽略:很多人以为 export 一次就能“一直用”,结果换窗口就失效,其实是预期和机制没对齐。
临时设置也得防坑:常见错误现象
看似简单,但几个典型问题高频出现:
- 写成
export VAR_NAME = "value"(等号空格)→ 报错bash: export: `=': not a valid identifier - 漏掉
$引用原PATH,写成export PATH=/new/path→ 原/usr/bin等全丢,ls、cd都报错 - 路径里有空格却没加引号:
export PATH=$PATH:/home/user/my app/bin→ 实际只认到/home/user/my,后面被当新命令参数 - 变量名用了连字符或小数点:
export my-app=1或export my.app=1→ bash 不认,只支持字母、数字、下划线,且不能数字开头
真正要用好临时变量,关键是理解它“只活在当前 shell 进程树里”这个边界 —— 超出这个范围的任何期待,都是配置方式错了。










