目录
Shell环境变量深入:加载流程测试
目标
理解Shell环境变量的加载流程测试
能够知道环境变量应该配置在哪里
切换Shell环境执行脚本文件介绍
在执行一个脚本文件时可以指定具体Shell环境进行执行脚本文件, 这个就是切换Shell环境执行脚本
Shell登录环境执行脚本文件语法
sh/bash -l/--login 脚本文件
含义: 先加载Shell登录环境流程初始化环境变量, 再执行脚本文件
Shell非登录环境变量执行脚本文件语法
bash # 加载Shell非登录环境
sh/bash 脚本文件 # 直接执行脚本文件
含义: 先执行加载Shell非登录环境流程初始化环境变量, 再执行脚本文件
测试案例
需求
Shell登录环境会运行/etc/profile
Shell非登录环境会运行/.bashrc
在/etc/profile与/当前用户/.bashrc文件分别设置环境变量数据,然后在shell脚本文件中输出环境变量数据,最后切换不同环境执行shell脚本文件观察验证上面的流程运行
分析
-
清理工作, 清理/etc/profile文件中VAR1环境变量进行删除, 并且重载这个配置文件
-
编辑/etc/profile, 增加环境变量VAR1=VAR1
-
编辑/root/.bashrc, 增加环境变量VAR2=VAR2
-
创建demo1.sh文件, 读取环境变量数据进行打印
# 输出环境变量VAR1 # 输出环境变量VAR2
-
以Shell非登录环境执行demo1.sh脚本文件, 观察只会输出VAR2, 不会输出VAR1
-
以Shell登录环境执行demo1.sh脚本文件, 观察会输出VAR2和VAR1
演示
编辑/etc/profile文件
gedit /etc/profile
编辑添加如下内容,保存退出
在root目录下,编辑.bashrc文件
gedit .bashrc
编辑添加如下最后2行内容,保存退出
创建文件demo1.sh
touch demo1.sh
编辑文件demo1.sh,添加如下内容
#!/bin/bash
echo $VAR1
echo $VAR2
直接执行脚本文件
bash demo1.sh
直接执行脚本文件, 即没有加载登录Shell环境变量, 也没有加载非登录Shell环境变量
先加载非登录Shell环境变量, 然后执行脚本文件
bash
bash demo1.sh
Shell非登录环境会加载文件
当前用户/.bashrc
的环境变量数据所以这里会输出VAR2的环境变量数据
先加载登录Shell环境变量, 然后执行脚本文件
bash -l demo1.sh
Shell登录环境会加载文件
etc/profile
和当前用户/.bashrc
的环境变量数据所以这里会输出VAR1和VAR2的环境变量数据
小结
1、Shell环境变量初始化加载原理过程
分类 | 初始化环境变量过程执行文件顺序 |
---|---|
shell登录环境初始化过程 | /etc/profile--》/etc/profile.d/*.sh--》~/.bash_profile--》~/.bashrc--》/etc/bashrc |
shell非登录环境初始化过程 | ~/.bashrc--》/etc/bashrc--》/etc/profile.d/*.sh |
2、那么以到底将环境变量定义到哪里呢?/etc/profile与/etc/bashrc的区别?
需要登录的执行的shell脚本读取的环境变量配置在:/etc/profile、/当前用户/.bash_profile
不需要登录的用户执行的shell脚本读取的环境变量配置在:/当前用户/.bashrc、/etc/bashrc
Shell环境变量深入:识别Shell环境类型
目标
理解如何识别shell登录环境与非登录环境
语法
使用$0识别环境语法
echo $0
输出
-bash
代表:shell登录环境输出
bash
代表: shell非登录环境注意:这个
$0
环境变量如果用在子shell中(shell脚本文件)输出Shell脚本本身的文件名
bash命令语法
bash
bash命令:用于切换为Shell非登录环境
分析
1、直接登录系统为shell登录环境输出 $0 观察输出信息效果
2、使用 bash 命令切换为shell非登录环境输出 $0 观察输出信息效果
3、创建test.sh脚本文件,编辑添加输出 $0 ,编程保存完成后执行test.sh脚本文件观察输出信息效果
小结
1、如何识别shell登录环境与非登录环境?
$0 用于获取当前Shell环境的类型, bash代表Shell非登录环境, -bash 代表Shell登录环境
# $0不可以在脚本文件中使用, 因为代表获取脚本文件名字
Shell环境变量深入:详细切换Shell环境
目标
理解切换shell环境的命令
切换shell环境命令介绍
-
直接登录加载shell登录环境
-
su切换用户加载Shell登录与Shell非登录环境
-
bash加载Shell登录与Shell非登录环境
切换环境方式:bash切换
命令
语法1:
bash # 加载【Shell非登录环境】
语法2:
bash -l Shell脚本文件 / bash --login shell脚本文件
sh -l shell脚本文件 / sh --login shell脚本文件
# 先加载【Shell登录环境】然后运行指定Shell脚本文件
分析
使用bash执行test.sh脚本文件,发生错误说明当前环境为Shell非登录环境