Linux 环境变量 详解
- 1. 环境变量定义
- 2. 环境变量的分类
- 2.1 全局变量
- 2.2 局部变量
- 3. Linux系统中重要的几个环境变量
- 3.1 PATH: 命令的搜索路径
- 4. 设置变量的三种方法
- 4.1 修改 /etc/profile
- 4.2 修改 .bash_profile文件
- 4.3 export命令定义变量
- 5. 环境变量的查看:echo $PATH,env或 printenv 或 export或set
- 6. 例子说明
- 6.1 export 该命令指定设置一个新的环境变量。
- 6.1 export 新增环境变量
- 6.2 export 修改环境变量
- 6.2 unset 该命令指定清除环境变量。
- 6.3 /etc/profile 修改环境变量
- 参考:
1. 环境变量定义
- 简单说就是:
环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。
它相当于一个指针,想要查看变量的值,需要加上“$”。 - 复杂说就是:
环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。
允许在内存中存储数据,以便运行在shell上的程序和脚本访问。
这些数据可以是用来识别用户、系统、Shell的特性以及任何其它需要存储的数据。
注意: Linux 系统中环境变量的名称一般都是大写的,这是一种约定俗成的规范。
2. 环境变量的分类
在bash shell中,环境变量分为两类:全局变量和局部变量。
2.1 全局变量
全局变量不仅对shell会话可见,对所有shell创建的子进程也可见。查看全局变量可以是用 printenv/env/命令。
[root@glusterfs home]# printenv
XDG_SESSION_ID=1
HOSTNAME=glusterfs.green.master
TERM=vt100
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.88.8.100 64488 22
SSH_TTY=/dev/pts/0
USER=root
……
……
2.2 局部变量
局部环境变量只能在定义它们的进程中可见。查看局部环境变量有点复杂,不像全局环境变量那样可以使用一个命令来只显示局部环境变量。set命令可以显示为某个特定进程设置的环境变量,也包括全局环境变量。
3. Linux系统中重要的几个环境变量
Linux 系统能够正常运行并且为用户提供服务,需要数百个环境变量来协同工作,这里列了 几个非常重要的环境变量
环境变量名称 作用
HOME 用户的主目录(也称家目录)
SHELL 用户使用的 Shell 解释器名称
PATH 定义命令行解释器搜索用户执行命令的路径
EDITOR 用户默认的文本解释器
RANDOM 生成一个随机数字
LANG 系统语言、语系名称
HISTSIZE 输出的历史命令记录条数
HISTFILESIZE 保存的历史命令记录条数
PS1 Bash解释器的提示符
MAIL 邮件保存路径
3.1 PATH: 命令的搜索路径
PATH 决定了shell将到哪些目录中寻找命令或程序
当运行一个命令的时候,linux在PATH目录下搜索遍历。
该变量指定命令的搜索路径。
如:ls 命令执行时候,首先去PATH指定的目录下搜索可执行程序进行执行。
[root@glusterfs home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
说明:
从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。
4. 设置变量的三种方法
4.1 修改 /etc/profile
在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行#
source /etc/profile不然只能在下次重进此用户时生效。
4.2 修改 .bash_profile文件
在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
vi/home/guok/.bash.profile添加如下内容:exportCLASSPATH=./JAVAHOME/lib;vi/home/guok/.bash.profile添加如下内容:exportCLASSPATH=./JAVAHOME/lib;JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。
4.3 export命令定义变量
直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,
shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
5. 环境变量的查看:echo $PATH,env或 printenv 或 export或set
1 使用echo命令查看单个环境变量。例如:
echo $PATH
2 使用env或 printenv 或 export 查看所有环境变量。例如:
env
3 使用set查看所有本地定义的环境变量。
6. 例子说明
6.1 export 该命令指定设置一个新的环境变量。
6.1 export 新增环境变量
[root@glusterfs home]# export HANI_ENV="test hani"
[root@glusterfs home]# env
……
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
HANI_ENV=test hani
……
[root@glusterfs home]# echo $HANI_ENV
test hani
[root@glusterfs home]#
6.2 export 修改环境变量
[root@glusterfs home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@glusterfs home]#
[root@glusterfs home]# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home
[root@glusterfs home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home
[root@glusterfs home]#
注意:环境变量一般用英文字母大写加下划线表示。
6.2 unset 该命令指定清除环境变量。
[root@glusterfs home]# unset HANI_ENV
[root@glusterfs home]# echo $HANI_ENV
[root@glusterfs home]#
6.3 /etc/profile 修改环境变量
PATH 后添加了 /etc/,后面验证ok。
root@glusterfs home]# vi /etc/profile
最后添加如下:
export PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home:/etc/"
source 一下
[root@glusterfs home]# source /etc/profile
查看:
[root@glusterfs home]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home:/etc/
[root@glusterfs home]#
参考: