在 CentOS(以及一般的 Linux 系统)里,env 本身只是临时设置环境变量的命令,不能“永久”生效。
但你可以通过配置文件,让环境变量在每次登录或启动进程时“永久”存在。
下面按使用场景说明:
编辑用户家目录下的配置文件:
vi ~/.bashrc
# 或
vi ~/.bash_profile
添加类似内容:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
然后生效:
source ~/.bashrc
✅ 登录该用户后一直有效
❌ 其他用户不可用
编辑全局配置文件:
vi /etc/profile
# 或
vi /etc/bashrc
添加:
export MY_VAR=hello
生效:
source /etc/profile
✅ 所有用户可用
⚠ 需要 root 权限
如果是服务进程(如 Java、Nginx、自定义服务):
systemctl edit myservice
添加:
[Service]
Environment=MY_VAR=hello
然后:
systemctl daemon-reload
systemctl restart myservice
✅ 服务专用
❌ 不影响 shell
env 命令本身能永久吗?❌ 不能
env VAR=value command
只是临时给后面命令用一次。
| 方式 | 是否永久 | 范围 |
|---|---|---|
env VAR=value |
❌ | 单次命令 |
~/.bashrc |
✅ | 当前用户 |
/etc/profile |
✅ | 所有用户 |
| systemd Environment | ✅ | 指定服务 |
如果你能说一下 “你想永久设置什么变量 / 给谁用”,我可以给你最合适的具体方案。