环境变量
程序的执行都需要运行环境,这个环境由多个环境变量组成
1、环境变量分类
-
生效范围分类
系统环境变量
:公共的,对全部的用户都生效用户环境变量
:用户私有的,自定义的个性化设置,只对该用户生效 -
生存周期分类
永久环境变量
:在环境变量脚本中配置临时环境变量
:使用在shell中临时定义
2、环境变量命名:全大写
3、常用的指令
env
查看当前用户的全部环境变量
env | grep 环境变量名
进行筛选
echo $环境变量名
输出环境变量的值
4、常用的环境变量
-
PATH
可执行程序的搜索目录,可执行程序:Linux系统命令,用户的应用程序
-
LANG
Linux系统的语言、地区、字符集
-
HOSTNAME
服务器的主机名
-
SHELL
用户当前使用的Shell解析器
-
HISTSIZE
保存历史命令的数目
-
USER
当前登录用户的用户名
-
PWD
当前的工作目录
-
LD_LIBRARY_PATH
C/C++语言动态链接库文件搜索的目录
-
CLASSPATH
JAVA语言库文件搜索的目录
5、设置环境变量
变量名=‘值’
export 变量名
如果环境变量的值没有空格等特殊符号,可以不用单引号包含
或
export 变量名=‘值’
采用export设置的环境变量,在退出Shell后就会失效;在登陆的脚本文件中配置才会永久有效
1)系统环境变量
设置系统环境变量对全部用户有效,设置系统环境变量有三种方法:
① /etc/profile
用户登录时候,会执行上述文件,不建议在上述文件中设置系统环境变量
② /etc/profile.d
目录中添加环境变量脚本(推荐)
/etc/profile
在每次启动时会执行 /etc/profile.d
下的全部脚本文件。后者容易维护,想删除环境变量直接删除对应文件就行
vim var.sh
export CC=dd
#退出重新登录
echo $CC #dd
③ /etc/bashrc
2)用户环境变量
用户环境变量只对当前用户生效,设置用户环境变量的方法
① .bash_profile
(推荐首选)
当用户登录时执行,每个用户都可以使用该文件来配置自己的环境变量
② .bashrc
当用户登录时以及每次打开新的SHELL时该文件都将被读取,不推荐在里面配置用户专用的环境变量,每开一个SHELL,该文件都会被读取一次,效率肯定受影响
③ .bash_logout
当每次退出系统时执行该文件
④ bash_history
保存了当前用户使用过的历史命令
6、环境变量脚本文件的执行顺序
执行顺序如下:
`/etc/profile -> /etc/profile.d -> /etc/bashrc -> 用户的.bash_profile -> 用户的.bashrc`
同名的环境变量,如果在多个脚本文件中有配置,以最后执行的脚本中的配置为准
7、环境变量的生效
① 在Shell下,用export设置的环境变量对当前的Shell立即生效,Shell推出后失效
② 在脚本文件中设置的环境变量不会立即生效,退出shell后重新登录时才生效,或者使用source
命令让其立即生效
8、★★★应用建议
系统环境变量在/etc/profile.d
中配置
用户环境变量在用户的bash_profile
中配置
9、重要环境变量详解
1)PATH
环境变量
可执行程序的搜索目录,可执行程序:Linux系统命令,用户的应用程序。
如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录
① PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。
export PATH=目录1:目录2:目录3:....:.
② PATH缺省包含了Linux系统命令所在的目录(/usr/local/bin:/usr/bin:/usr/ocal/sbin:/usr/sbin ),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。
③ 在用户的.bash_profile文件中,会对PATH进行扩充,如下:
export PATH=$PATH:$HOME/bin
④ 如果PATH变量中没有包含圆点.
,执行当前目录下的程序需要加./或使用绝对路径。
2)LANG
环境变量
LANG环境变量存放的是Linux系统的语言、地区、字符集
不需手工设置,/etc/profile会调用/etc/profile.d/lang.sh脚本完成对LANG的设置
。
3)LD_LIBRARY_PATH
环境变量
C/C++语言动态链接库文件搜索的目录
LD_IBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同
4)CLASSPATH
环境变量
JAVA语言库文件搜索的目录
CLASSPATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同