在 Linux 里不管是装 JDK、Go、Node,还是配置命令路径、自定义系统参数,几乎都会用到 export。很多人只会照着教程复制,却不知道它到底干嘛的、临时和永久有啥区别、配置完为什么不生效。
今天就用很好理解的方式,把 export 和环境变量一次性讲清楚,看完你自己就能配、能改、能排查问题,Ubuntu、CentOS 所有发行版通用。
先说最简单的概念:
环境变量就是系统全局能用的 “变量”,比如你装了个软件,想在任何目录都能直接敲命令,就要把它加到 PATH 里,这就是靠 export 实现的。
先看当前有哪些环境变量
想看看系统现在有哪些环境变量,直接用:
env
或者只看某一个,比如 PATH:
echo $PATH
echo $HOME
echo $LANG
看到前面带 $ 符号的,基本都是环境变量。
export 最基本用法:临时设置环境变量
最简单的格式就是:
export 变量名="变量值"
比如我想临时加一个路径到 PATH:
export PATH=$PATH:/usr/local/myapp/bin
这样当前终端里,就能直接用 myapp 目录下的命令了。
再比如自定义一个变量:
export MY_VERSION="1.0.0"
然后直接输出:
echo $MY_VERSION
重点:这种 export 只在当前终端窗口有效
关掉终端、重新登录,就失效了。
让环境变量只对当前用户永久生效
想关掉终端还在,就写到用户的配置文件里。
最常用的是 ~/.bashrc:
vim ~/.bashrc
在最后面加上:
export PATH=$PATH:/usr/local/myapp/bin
export MY_DIR="/data/files"
export GO111MODULE=on
保存后让它立即生效:
source ~/.bashrc
这样以后不管开多少窗口、重登多少次,都有效。
有些系统也会写到 ~/.profile,用法一样,看你习惯哪个。
对所有用户生效(系统级环境变量)
如果你希望整个服务器所有用户都能用这个变量,就改系统配置:
sudo vim /etc/profile
同样在末尾加 export:
export PATH=$PATH:/opt/app/bin
生效方式:
source /etc/profile
或者重启一下也可以。
常见实用例子
1. 给 Go 配置环境变量
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
2. 给 Java 配置 JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/default-java
export PATH=$PATH:$JAVA_HOME/bin
3. 临时修改语言环境
export LANG=en_US.UTF-8
export LANG=zh_CN.UTF-8
4. 取消一个环境变量
unset MY_VERSION
容易踩坑的小细节
- 配置 PATH 时一定要写
$PATH:在前面,不然会覆盖系统原有命令。 - 修改配置文件后必须
source或重新登录,不然不会立即生效。 - 脚本里用 export,只在脚本内部有效,不会影响外部终端。
简单总结一下:
- 临时用:直接
export 变量=值 - 当前用户永久:写进
~/.bashrc并 source - 所有用户永久:写进
/etc/profile - 查看:
echo $变量名 - 删除:
unset 变量名
export 看着简单,其实是 Linux 配置软件、环境、脚本的基础中的基础,弄懂它,以后装什么工具都不会再懵了。