在大家初次接触到Linux系统中,相信环境变量会让你头疼不已。习惯了在Windows设置PATH的你,被Linux上各种文件可以设置环境变量头疼不已!对于可以在当前用户执行的命令,但是sudo就无法执行困惑不堪!下面,我们就系统的和大家讲解下Linux的环境变量,让大家豁然开朗;
一、什么是环境变量
1.在Linux中,很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息;
2.bash shell使用环境变量来存储有关shell会话和工作环境信息;
允许你在内存中存储数据,以便运行在shell的程序和脚本访问;
是存储永久数据的一种简单方法,用来识别用户账户、系统、shell的特性,以及任何你需要存储的数据;
3.在bash shell中,环境变量分为:
全局变量:不仅对shell会话可见,对所有shell创建的子进程也可见; ;
局部变量:只对创建它们的shell可见;
二、全局环境变量
1.Linux在你开始bash会话之前就设置了一些全局的环境变量;
2.系统环境变量一律使用大写字母以区别普通用户的环境变量;
3.printenv命令查看全局环境变量,大部分都是系统在用户登录系统时设置的;
4.echo命令显示单个环境变量的值;
5.在当前shell会话的子进程中也是可见的;
三、局部环境变量
1.Linux系统也默认定义了标准局部环境变量;
2.set命令查看某个特定进程的所有环境变量,这也包含全局环境变量(通过printenv命令能看到的全局环境变量都出现在了set命令的输出中,但是set命令输出中还有一些其它的环境变量,这就是局部环境变量;
四、设置环境变量
1.一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的局部环境变量;
2.设置全局环境变量,先创建一个局部环境变量,然后再把它导入到全局变量中;
五、删除环境变量
1.使用unset命令来删除环境变量;
2.处理全局环境变量时,如果你是在子进程中删除了一个全局环境变量,它只对子进程有效,该全局环境变量在父进程中依然有效;
七、设置PATH环境变量
1.PATH环境变量定义了命令行输入命令的搜索路径;
2.通常使用单点符也加到PATH环境变量里,单点符代表当前目录;
八、定位系统环境变量
1.在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件;
2.bash检查的启动文件取决于你启动bash shell的方式,启动bash shell有3中方式:
登录时当做默认登录shell;
作为非登录shell的交互shell,在命令行中输入bash;
作为运行脚本的非交互shell,在shell脚本中执行shell;
3.当你登录Linux系统时,登陆了shell会从4个不同的启动文件里读取命令:
/etc/profile:bash shell的主启动文件,每个用户登录都会执行这个启动文件;
$HOME/.bash_profile:用户专用启动文件;
$HOME/.bash_login:用户专用启动文件;
$HOME/.profile:用户专用启动文件;
4./etc/profile文件
5.$HOME目录下的启动文件
剩下的3个启动文件都起着同一个作用:提供一个用户专属的启动文件来定义用户专有的环境变量;
$HOME/.bash_profile;
$HOME/.bash_login;
$HOME/.profile;
.bash_profile文件;
6.交互式shell
如果你在命令行提示符敲下bash命令,你启动的shell称作为交互式shell;
如果bash是作为交互式shell启动的,它就不会去访问/etc/profile文件,而会去用户的HOME目录检查.bashrc是否存在;
.bashrc文件有两个作用;
查看/etc目录下的公用bashrc文件;
而是为用户提供了一个定制自己的命令别名和私有脚本函数的地方;