不同的程序的执行需要不同的运行环境,这个环境就成为环境变量。
1. 按生效的范围分类
2.按生存周期分类
env # 显示当前用户的变量
set # 显示当前shell的变量,包括当前用户的变量
export # 显示当前导出成用户变量的shell变量
输出内容较多时,可以配合grep
命令进行筛选,以便查看。也可以使用echo 变量名
查看相应变量。
HOME
:用户的家目录;HOSTNAME
:服务器的主机名;SHELL
:用户当前使用的Shell解析器;HISTSIZE
:保存历史命令的数目;USER
:当前登录用户的用户名;PWD
:当前工作目录;PYTHONPATH
:Python导入包的路径,内容是以冒号分隔的路径列表;C_INCLUDE_PATH
:C语言的头文件路径,内容是以冒号分隔的路径列表;CPLUS_INCLUDE_PATH
:CPP的头文件路径,内容是以冒号分隔的路径列表;LD_LIBRARY_PATH
:用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表,非系统默认;PATH
:可执行文件(命令)的存储路径。路径与路径之间用:
分隔。当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行;JAVA_HOME
:jdk的安装目录;CLASSPATH
:存放Java导入类的路径,内容是以冒号分隔的路径列表,非系统默认;LANG
:LANG环境变量存放的是Linux系统的语言、地区、字符集,它不需要系统管理员手工设置,/etc/profile会调用/etc/profile.d/lang.sh脚本完成对LANG的设置。可以看看文章:[Shell详解-2]:变量、默认变量、数组
变量名=值
export 变量名
或者
export 变量名=值
# 也可以用 declare命令,具体看上面推荐的文章。
注意: 通过命令行设置的环境变量只在当前bash及其子bash中有效,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在文件中配置系统变量或用户变量。
无论是修改系统变量或是用户变量,在修改后都需要使用source 文件名
或者. 文件名
或者重启Shell
的方式使修改生效。
系统环境变量对全部的用户生效,设置系统环境变量有三种方法。
方法1: 在/etc/profile
文件中设置
用户登录时会自动执行/etc/profile
文件中设置系统的环境变量,每打开一个新的Shell
时都会被执行一次,打开子bash
不会被执行
方法2:在/etc/profile.d
目录中增加环境变量脚本文件
/etc/profile
在每次启动时会执行 /etc/profile.d
下全部的脚本文件。 /etc/profile.d
比/etc/profile
好维护,不想要什么变量直接删除 /etc/profile.d
下对应的 shell 脚本即可。
方法3:在/etc/bashrc
文件中设置环境变量
该文件配置的环境变量将会影响全部用户的bash shell
。在Ubuntu中可能为bash.bashrc
。
用户环境变量只对当前用户生效,设置用户环境变量也有多种方法。以下三个文件都位于用户家目录。
方法1: 修改.bash_profile
每打开一个新的Shell
时都会被执行一次,打开子bash
不会被执行,每个用户都可以使用该文件来配置专属于自己的环境变量。在Ubuntu中可能为.profile
。
方法2: 修改.bashrc
当用户登录以及每次打开新的Shell
时该文件都将被执行,打开子bash
也会被执行。
方法3:修改.bash_logout
每次退出系统或退出bash
时系统会执行该文件。
注意: 如果在家目录找不到这三个文件,可以去/etc/skel
目录复制一份。/etc/skel
目录是存放新用户配置文件的目录,当创建一个新用户的时候会将此目录下的文件复制到新用户目录下,可以理解为创建新用户时使用的模板.。