Linux 的变量可分为两类:环境变量和本地变量
环境变量,或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了。Linux 的环境变量具有继承性,即子shell 会继承父shell 的环境变量。
本地变量,当前shell 中的变量,很显然本地变量中肯定包含环境变量。Linux 的本地变量的非环境变量不具备继承性。
在Linux中,环境变量一般用大写加下划线命名。环境变量就相当于一个指针,当我们要查看指针所指向的值的时候需要解引用,同样的,当我们要想查看环境变量里面的值的时候,需要在前面加$引用。
在Linux下,具有全局属性。
常见的环境变量
使用 echo $+环境变量名,提取环境变量的值
环境变量的值并非一成不变
1、PATH:指定命令的搜索路径。
它表示当前目录下执行下一条命令时的搜索路径。
每一个目录之间有:隔开。
2、HOME:指定用户的主工作目录(即用户登录到Linux系统时,默认的目录)
普通用户:
root用户:
随着用户的切换,该环境变量的值也在变化。
3、HISTSIZE:保存历史命令记录的条数
在Linux中按上下键可以查找以前输入的命令,该环境变量的值表示最多保存的记录的数目。
4、LOGNAME:显示当前用户的登录名,当前登录名是zx,即使权限改为root,环境变量值仍为zx。
5、HOSTNAME:指主机的名字,应用程序要是用到主机名的话就是从这个变量中获取的。
6、SHELL:指当前用户使用的是那种Shell。
7、LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
UTF-8表示支持中文输入
8、MAIL:指当前的用户邮件存放的目录。
9、PS1:命令基本提示符,对root是#,对普通用户是$。
10、PS2:附属提示符,默认是”>”。
env:显示所有环境变量。
set:显示本地定义的shell变量。
export:设置一个新的环境变量。
unset:清除环境变量
readonly:设置只读环境变量。临时变量,用户退出登录后即失效。
存放环境变量的文件
我们知道,在linux中一切皆文件。所以环境变量也是存放在文件中的。linux中有很多记载环境变量的文件,他们是按照一定顺序被系统读入的。
1、/etc/profile:
这个文件是每个用户登录时都会运行的环境变量设置,当用户第一次登录时该文件被执行,并从/ect/profile.d目录的配置文件中搜索shell的设置。这个文件的作用就是当用户登录的时候用于获取系统的环境变量,只在登陆的时候获取一次。
2、/ect/bashrc:
在执行完/etc/profile内容后,如果用户运行bash shell的话,则就执行这个文件。当每次一个新的bash shell被打开时,该文件被读取。所以,如果想每打开一个bash都执行某些操作,就可以在这个文件里面设置。
3、~/.bash_profile:
每个用户都可以使用该文件输入自己专用的shell信息,当用户登录时,该文件仅仅被执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。单个用户对于此文件的修改只会影响到他以后的每一次登录。
5、~/.bashrc:
该文件只包含专用于你的bash信息,当你登录时以及每次打开新的shell时,该文件就会自动被读取。
6、~/.bash_logout:
每次在退出shell的时候会执行该文件。它提供了定制用户环境的功能,比如删除账号内的临时文件等命令就可以放在bash_logout文件内。如果这个文件不存在的话则就执行其他的命令。
总结:
这些文件都是为了为用户配置环境变量提供的。可以看到/ect/profile就相当于构造函数,~/.bash_logout就相当于析构函数。