Ubuntu20.04配置环境变量

本文最后更新于:8 个月前

Ubuntu系统下有多种不同级别的环境变量文件,加载的过程也不相同。本文介绍如何在Ubuntu下设置环境变量

Ubuntu20.04配置环境变量

一、引言

1.1、一个奇怪的现象

发现一个很奇怪的现象:

Ubuntu20.04,用普通用户timegogo登陆,su root切换到root用户,设置/root/.bashrc,末尾添加以下两行

1
2
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME

使用source ~/.bashrc生效。

用root用户可以输出$JAVA_HOMEPATH两个环境变量

然后切换回timegogo用户,没有对/home/timegogo/.bashrc做任何修改,发现可以输出$JAVA_HOME,但是却不能正常输出$PATH(没有包含JAVA_HOME)

接着在/home/timegogo/.bashrc末尾,添加以下一行:

1
export PATH=$PATH:$JAVA_HOME

使用source ~/.bashrc生效。之后输出的$PATH就携带上JAVA_HOME了。

1.2、实际原因

仔细观察上述操作,在同一个终端内,先用root用户登陆输出JAVA_HOME变量,之后再切换到timegogo用户,输出JAVA_HOME变量。实际上,这个JAVA_HOME变量并不是timegogo用户下的环境变量。而是仅仅是root的环境变量,但是在终端输出之后(或者说是切换到root用户之后),终端就保留下来了这个变量。而之所以timegogo用户能获得JAVA_HOME,是timegogo用户从终端中获取的。一旦终端关闭,相应的,终端中的JAVA_HOME也就消失了。

可以通过一个实验来验证:

打开一个新的终端,然后按下图操作(结果也见图)

2022-12-06 14-12-14 的屏幕截图

二、环境变量文件

2.1、概述

Ubuntu下有多种环境变量文件,/etc/profile(作用于所有用户),~/.bashrc(作用于当前用户)

修改文件后,需要重新加载才能生效。方式有两种:

  1. 第一种,注销、重新登陆
  2. source 文件

2.2、/etc/profile文件

在用户登陆的时候生效。仅分配给当前登陆的用户。因此有一个有趣的现象:

/etc/profile中声明了IDEA_HOME

1
2
export IDEA_HOME=/usr/local/idea-IC
export PATH=$PATH:$IDEA_HOME

当我们使用timegogo登陆后,终端使用timegogo用户输出$PATH,包含了IDEA_HOME

然后在终端中切换到root用户,再输出$PATH,就不包含IDEA_HOME了。


Ubuntu20.04配置环境变量
http://timegogo.top/2022/12/06/Linux/Ubuntu配置环境变量/
作者
丘智聪
发布于
2022年12月6日
更新于
2023年7月16日
许可协议