目录

1.Shell环境变量深入:自定义系统环境变量

2.Shell环境变量深入:加载流程原理介绍

3.Shell环境变量深入:加载流程测试

4.Shell环境变量深入:识别与切换Shell环境类型


1.Shell环境变量深入:自定义系统环境变量

1、目标:

能够自定义系统级环境变量

2、全局配置文件/etc/profile应用场景:

当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供给所有的Shell程序使用。以后只要是所有的Shell程序或命令使用的变量,就可以定义在这个文件中。

3、案例演示:

1.需求:

/etc/profile定义存储自定义系统级环境变量数据

2.创建环境变量步骤:

1.编辑/etc/profile全局配置文件

#增加命令:定义变量VAR1=VAR1并导出为环境变量

#扩展:vim里面的命令模式使用G快速定位到文件末尾,gg快速回到文件开头

Shell脚本学习_环境变量深入插图2.重载配置文件/etc/profile,因为配置文件修改后要立刻加载里面的数据,语法:

source /etc/profile

3.在Shell环境中读取系统级环境变量VAR1

Shell脚本学习_环境变量深入插图(1)

4.小结:

1.系统级全局配置文件

2.设置环境变量:export var_name=value,注意:环境变量建议变量名全部大写

3.修改了/etc/profile文件后,要立刻加载修改的数据需要重载配置文件:source /etc/profile


2.Shell环境变量深入:加载流程原理介绍

1.目标:

1.能够说出交互式Shell与非交互式Shell

2.能够说出登录Shell与非登录Shell环境

2.Shell工作环境介绍:

用户进入Linux系统就会初始化Shell环境,这个环境会加载全局配置文件和用户个人配置文件中的环境变量,每个脚本文件都有自己的Shell环境

3.Shell工作环境分类:

1、交互式与非交互式shell:

1.交互式Shell

与用户进行交互、互动,效果就是用户输入一个命令,Shell环境立刻反馈响应。

1.非交互式Shell

不需要用户参与就可以执行多个命令,比如一个脚本文件含多个命令,直接执行并给出结果。

2、登录Shell与非登录Shell环境:

1.Shell登录环境:

需要用户名\密码登录的Shell环境

2.Shell非登录环境:

不需要用户名\密码进入的Shell环境或执行脚本文件

注意:不同工作环境加载环境变量的流程不一样

3、环境变量初始化流程:

1.全局配置文件

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

2.个人配置文件

当前用户/.bash_profile

当前用户/.bashrc

环境变量加载初始化过程:

Shell脚本学习_环境变量深入插图(2)

一般情况下都是直接针对全局配置进行操作

4、小结:

1.能够说出交互式Shell与非交互式Shell

交互式:需要用户参与互动的Shell环境,输入一个命令,环境就立刻响应反馈结果

非交互式:只执行命令,不需要用户的参与

2.能够说出登录Shell与非登录Shell环境

Shell登录环境:需要用户名\密码登录的Shell环境。

Shell非登录环境:不需要用户名\密码进入的Shell环境或执行脚本文件。


3.Shell环境变量深入:加载流程测试

1、目标:

1.理解Shell环境变量的加载流程测试

2.能够知道环境变量应该配置在哪里

2、切换Shell环境执行脚本文件介绍:

在执行一个脚本文件时可以指定具体Shell环境进行执行脚本文件,这个就是切换Shell环境执行脚本。

1.Shell登录环境执行脚本文件语法:

sh/bash -l/--login 脚本文件
#含义:先加载Shell登录环境流程初始化环境变量,再执行脚本文件

2.Shell非登录环境变量执行脚本文件语法:

bash #加载Shell非登录环境
sh/bash 脚本文件 #直接执行脚本文件
#含义:先执行加载Shell非登录环境流程初始化环境变量,再执行脚本文件

3、测试案例:

1.需求:

Shell登录环境会运行/etc/profile

Shell非登录环境会运行/.bashrc

在/etc/profile与当前用户/.bashrc文件分别设置环境变量数据,然后在shell脚本文件中输出环境变量数据,最后切换不同环境执行shell脚本文件观察验证上面的流程运行

2.分析:

1.清理工作,清理/etc/profile文件中VAR1环境变量进行删除,并且重载文件 

2.编辑/etc/profile,增加环境变量VAR1=VAR1

Shell脚本学习_环境变量深入插图(3)

3.编辑/root/.bashrc,增加环境变量VAR2=VAR2

Shell脚本学习_环境变量深入插图(4)

Shell脚本学习_环境变量深入插图(5)

4.创建demo1.sh文件,读取环境变量数据进行打印

#输出环境变量VAR1
#输出环境变量VAR2
5.以Shell非登录环境执行demo1.sh脚本文件,观察只会输出VAR2,不会输出VAR1

Shell脚本学习_环境变量深入插图(6)

6.以Shell登录环境执行demo1.sh脚本文件,观察会输出VAR1和VAR2

Shell脚本学习_环境变量深入插图(7)

4、小结:

1.Shel环境变量初始化加载原理过程:

1.shell登录环境初始化过程:

/etc/profile–》/etc/profile.d/*.sh–》~/.bash_profile–》~/.bashrc.》/etc/bashrc

2.shell非登录环境初始化过程:

~/.bashrc–》/etc/bashrc–》/etc/profile.d/*sh

2.那么以到底将环境变量定义到哪里呢?/etc/profile与/etc/bashrc的区别?

需要登录的执行的shel脚本读取的环境变量配置在:/etc/profile、/当前用户/.bash profile不需要登录的用户执行的shell脚本读取的环境变量配置在:/当前用户/.bashrc、/etc/bashrc


4.Shell环境变量深入:识别与切换Shell环境类型

1、目标:

理解如何识别Shell登录环境与非登录环境。

2、语法:

echo $0  #识别环境语法

Shell脚本学习_环境变量深入插图(8)

Shell脚本学习_环境变量深入插图(9)

-bash为登录环境、bash为非登录环境。 

3、切换环境方式1:

语法1:

su 用户名 --login
或
su 用户名 -l
#切换到指定用户,加载Shell登录环境变量

Shell脚本学习_环境变量深入插图(10)Shell脚本学习_环境变量深入插图(11) 

语法2:

su 用户名
#切换到指定用户,加载Shell非登录环境变量

Shell脚本学习_环境变量深入插图(12)

4、切换环境方式2:

语法1:

bash #加载Shell非登录环境

语法2:

bash -l Shell脚本文件 / bash --login Shell脚本文件
sh -l Shell脚本文件  /  sh --login Shell脚本文件
#先加载Shell登录环境,任何运行指定的Shell脚本文件

本站无任何商业行为
个人在线分享 » Shell脚本学习_环境变量深入
E-->