全局配置文件/etc/profile
当前用户进入shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供给所有的Shell程序使用。
以后只要是所有Shell程序或命令使用的变量,就可以定义在这个文件中
创建环境变量步骤
1.编辑全局配置文件
export var=val
2.使修改生效
source /etc/profile
3.在Shell环境中就可以读取到环境变量了
shell工作环境
shell工作环境介绍
用户登录系统时,Shell为用户定义了工作环境,工作环境提供了共享数据环境变量,比如shell解析器类型、主机名等,这些数据存储在环境变量中,便于shell脚本程序操作使用
shell工作环境分类
交互式与非交互式shell
交互式Shell
是shell的一种运行模式,交互式shell等待你输入命令,并且立即执行,然后将结果反馈给你。这是每个CLI用户都非常熟悉的流程:登录、执行一些命令、登出。当你登出后,这个shell就终止了。
非交互式Shell
是shell的另一种运行模式,它专门被用来执行预先设定的命令。在这种模式下,shell不与用户进行交互,而是读取存放在脚本文件中的命令并执行它们。当它读到文件的结尾,这个shell就终止了。
登录Shell与非登录Shell环境
类型名称 | 含义 |
---|---|
shell登录环境 | 需要用户名、密码登录之后才能进入的shell |
shell非登录环境 | 直接不用输入用户名和密码就可以打开的shell 或调用子Shell时使用的工作环境 |
注意:不同的工作环境加载环境变量流程不一样
这里/etc/passwd
文件中以nologin结尾的用户就是不需要登陆的shell环境
环境变量初始化流程
登陆环境执行语法
Shell登陆环境执行脚本文件语法
# 先加载shell登录环境变量, 然后再执行脚本文件
bash -l 脚本文件 或 bash --login 脚本文件
sh -l 脚本文件 或 sh --login 脚本文件
Shell非登陆环境执行脚本文件语法
bash 脚本文件 / sh 脚本文件 #执行脚本
识别Shell环境类型
使用$0识别环境语法
echo $0
输出
-bash
代表:shell登录环境输出
bash
代表: shell非登录环境注意:这个
$0
环境变量如果用在子shell中(shell脚本文件)输出Shell脚本本身的文件名
bash命令语法
bash
bash命令:用于切换为Shell非登录环境
logout命令语法
logout
logout命令: 用于退出Shell登录环境
exit命令语法
exit
exit命令: 用于退出Shell登录或非登录环境
logout
只能退出Shell登录环境
exit
可以退出Shell登录与非登录环境