export 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于 Shell 内建命令族(见Shell 内建命令)。脚本里想让子进程读到某个变量,必须 export。
export 把一个 shell 变量标记为"环境变量"——这样你启动的子进程(如 ./myprog、管道里的命令)才能继承它。不 export 的变量只在当前 shell 内部可见。
一、基本用法
bash
export API_KEY="abc123" # 设置并导出环境变量
export PATH="$PATH:/opt/bin" # 临时把 /opt/bin 加进 PATH
export # 列出所有已导出的环境变量普通
VAR=1只是 shell 局部变量,子进程看不到;export VAR=1才让它进入环境,子进程getenv("VAR")能读到。脚本调用其他程序并需要传配置时,export 是必经之路。
二、与局部变量的区别
bash
VAR=local_only
export ENV_VAR=visible
bash -c 'echo $VAR; echo $ENV_VAR' # 第一个空、第二个打出 visible关键区别:局部变量不传给子 shell,export 的才会。上面例子里
VAR子进程读不到(空),ENV_VAR能读到。调试"子进程为什么读不到我的变量"时,先确认有没有 export。
三、临时生效 vs 永久
bash
export PATH="$PATH:/usr/local/go/bin" # 只对当前会话有效
echo 'export PATH="$PATH:/usr/local/go/bin"' >> ~/.bashrc # 永久
source ~/.bashrc # 立即生效(见 [source](/linux/cmd/source.md))命令行 export 只管当前终端;要永久,写进
~/.bashrc/~/.profile。注意:在~/.bashrc里 export 只对交互 shell 生效,cron/系统服务读不到,那种场景要在对应 unit 文件或/etc/environment设。
四、取消导出
bash
export -n VAR # 取消导出(变回局部变量,但值还在)
unset VAR # 彻底删除该变量
export -n只是不再传给子进程,变量本身还在当前 shell;unset是连当前 shell 里的也删掉。
相关命令
一句话总结
export = 导出环境变量(shell 内建):export VAR=val 让子进程继承;普通变量不传子进程、export 的才传——脚本传配置必用;临时改用命令行 export,永久写 ~/.bashrc 并 source;export -n 取消导出、unset 彻底删除。