Linux-环境变量

345 阅读4分钟

系统环境变量是一些保存变量的数据类型,如使用jdk运训Java程序时,需要知道jdk的路径,因此可以将jdk的路径保存到一个变量中,通过查询这个变量就可以获取jdk的路径.

Linux中环境变量主要用来定义系统运行环境的一些参数.

Linux中,环境变量名称一般是全大写,这是约定俗成的规范

1. Linux环境变量的分类

1. 按照生命周期

临时环境变量

临时定义的环境变量,当退出shell环境之后,环境变量就失效了.

永久环境变量

永久性的环境变量,不会因为用户退出shell环境就失效.

2. 按照作用域

系统环境变量

环境变量的作用域是整个系统,也就是无论Alice还是Bob登陆了系统,已经设置的系统环境变量的值不会因为用户的不同而产生差异.

系统环境变量

用户环境变量

是单个用户设置的环境变量,只有特定用户才能使用,如 Alice用户设置的环境变量,Bob登陆后就会发现他不能使用Alice定义的环境变量.

2.常见的环境变量

可以使用env命令查询系统的环境变量,常用的环境变量名称和意义如下表:

环境变量名称作用
HOME用户的主目录(也称家目录)
SHELL用户使用的 Shell 解释器名称
PATH定义命令行解释器搜索用户执行命令的路径
EDITOR用户默认的文本解释器
RANDOM生成一个随机数字
LANG系统语言、语系名称
HISTSIZE输出的历史命令记录条数
HISTFILESIZE保存的历史命令记录条数
PS1Bash解释器的提示符
MAIL邮件保存路径

2. 设置环境变量

环境变量有关的文件介绍

文件作用
~/.bash_history记录用户输入过的历史命令
~/.bash_logout注销shell时的执行的命令
~/.bash_profile为系统的每个用户设置环境信息,用户登陆时从/etc/profile.d目录中查找shell设置
~/.bashrc每次使用shell时执行
/etc/profile系统环境变量,对所有用户生效

环境变量的设置方法

环境变量类型设置方法优点缺点
系统环境变量修改/etc下的profile文件
[推荐] 在/etc/profile.d目录下通过添加sh脚本设置环境变量容易维护,只需要在目录下增删改单个脚本就可以修改环境变量
/etc/bashrc文件中设置环境变量
用户环境变量[推荐] 在~/.bash_profile文件中设置,如果没有此文件就新建一个
在~/.bashrc中设置每次登陆或打开shell都要读取.bashrc文件,效率低

设置环境变量的基本语法

k=v形式定义

设置环境变量一般使用VARIABLE=value的格式进行创建.如设置Java中依赖的路径时CLASSPATH==/usr/local/jdk-11.0.11/jre/lib.

:分割多个路径

如果一个变量包括多个值,则使用:作分隔符,隔开几个值.如PATH环境变量中,PATH=/usr/local/jdk-11.0.11/bin:/bin:/ust/local/texlive/2022/bin/x86_64-linux:.

export进行变量传递

不用export设置的环境变量仅对当前shell起作用,不会传导到子进程。export设置的环境变量在子进程也有效。

.的作用

.代表当前目录,在PATH中设置环境变量时,一般需要加入.,不加入.则需要使用./或者绝对路径.其区别参考来源于REFERENCE-2的图: 环境变量添加当前目录的作用.png

使用$进行环境变量引用

$代表引用环境变量,其在环境变量设置中有以下用法:

查询特定环境变量的值

通过使用echo $VARIABLE命令可以查询某个环境变量的值,如echo $PATH命令会查询PATH环境变量的值.

引用环境变量

有时候可能要引用已经定义好的环境变量,此时只需要使用$符号进行引用就可以.如:

export JAVA_HOME=/usr/local/jdk-11.0.11
export PATH=$JAVA_HOME/bin:$PATH:.

在上述例子中,使用$JAVA_HOME引用已经定义好的JAVA_HOME环境变量,同时,使用$PATH引用之前已经定义好的环境变量进行扩充.不同环境变量执行顺序为:

flowchart LR
sysprofile([/etc/profile])-->sysprofile.d(/etc/profile.d)-->sysbahsrc(/etc/bashrc)-->userprofile(用户的.bash_profile)-->userbashrc([用户的.bashrc])

因此,后生效的环境变量可以通过$符号调用前面的环境变量.

REFERENCE

  1. 什么是环境变量,Linux环境变量及作用
  2. Linux环境变量
  3. Linux中.bash文件讲解
  4. linux环境变量和对应文件的生效顺序