目录
②使用登录式的交互式shell,系统如何加载环境变量(重点)
前言:
为什么要学习环境变量
>>>系统中有很多默认的环境变量,很多脚本和程序依赖于这些环境变量,
要读懂系统中的脚本和程序中的代码,必须掌握环境变量
>>>我们需要在Linux环境下编程,包括写shell脚本等,都需要调用系统中的环境变量,
包括调用系统默认的环境变量和用户自定义的环境变量
>>>当需要个性化定义环境变量,则需要知道环境变量存储在哪里,如何去定义和使用
①变量是什么东西
>>>printenv:输出系统中的环境变量
>>>set :输出系统中的所有变量
>>>环境变量:是存储有关shell会话和工作环境的信息
>>>变量存储在内存中,运行在shell上的程序和脚本,都可以访问
>>>格式:variabel=values(变量的等号两边都不能有空格,需要空格用引号引起来)
变量分为两种类型:环境变量和局部变量
>>>环境变量
环境变量不仅对shell会话可见,对所有的shell创建的子进程都有效
使用export命令,使变量成为环境变量
>>>局部变量
局部变量只能在创建它的shell中有效,当这个shell退出或终止后,局部变量会失效
即只有在定义它们的进程中有效
②使用登录式的交互式shell,系统如何加载环境变量
shell的划分
区别:按是否交互划分:交互式shell和非交互式shell
按是否登录划分:登录shell和非登陆shell
>>>交互式shell
登录、执行命令、退出,当退出后,shell也会终止
>>>非交互式shell
以shell script(脚本)方式去执行,不需要进行交互
>>>登录式shell
案通过账号密码验证登录到Linux
>>>非登陆式shell
通过图形化界面打开一个terminal终端
登录式的交互式shell执行的启动文件——知道系统如何去加载环境变量
(重点)
正常情况下:
涉及文件:/etc/profile ——>/etc/profile.d
$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile
$HOME/.bashrc ——>/etc/bashrc
>>>先读取/etc/profile文件(系统中每个用户登录一定会执行的文件)
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL:将这几个变量设置为环境变量
加载/etc/profile.d 目录下的所有shell脚本(存放用户登录时要执行的应用专属启动文件)
>>>再读取$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile其中的一个文件(按顺序)
$HOME/.bash_profile:执行$HOME/.bashrc文件;并且PATH=$PATH:$HOME/.local.bin:$HOME/bin
>>>如果上一步未读取到文件,则读取$HOME/.bashrc文件
$HOME/.bashrc文件(建议用户在此文件设置自己的别名):读取/etc/bashrc文件
非正常启动情况(su命令切换用户):
>>>直接读取/etc/bashrc文件,然后进入命令行交互
③如何去设置变量
>>>设置环境变量:建议在/etc/profile这个文件以格式:variabel=values设置,并export输出作为环境变量
>>>设置局部变量:在对应的进程下以格式:variabel=values设置,当退出该进程,变量失效
>>>删除变量:unset命令
>>>删除局部变量,可以直接unset variable方式去删除
>>>删除环境变量,登录shell进程下创建的子进程删除环境变量时,只是从子进程中删除,父进程中环境变量不变
说明:
>>>以上内容是本人学习的总结
>>>如还有错误,请留言,指正
>>>亦可分享自己的想法,互相学习