一.自定义系统环境变量
1.创建环境变量步骤
1.1 系统级全局配置文件:/etc/profile
1.2 设置环境变量
# 写入要设置的环境变量,建议变量名全部大写
export VAR_NAME=VALUE
1.3 加载修改好的数据,重载配置文件
source /etc/profile
二.加载流程原理介绍
1.shell工作环境介绍
用户进入linux系统就会初始化shell环境,这个环境会加载全局配置文件和用户个人配置文件中的环境变量。每个脚本文件都有自己的shell环境。
2.shell工作环境分类
- 交互式shell
需要用户参与互动的shell环境,用户输入一个命令,环境就立刻响应结果。
- 非交互式shell
不需要用户参与就可以执行多个命令,比如一个脚本文件含有多个命令,直接执行并给出结果。
3.登录shell与非登录shell环境
shell登录环境:需要用户名、密码登录的shell环境
shell非登录环境:不需要用户名、密码进入shell环境,或执行脚本文件
-
注意:不同的工作环境加载环境变量流程不一样
4.环境变量初始化
4.1 全局配置文件
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
4.2 个人配置文件
当前用户:~/.bash_profile
当前用户:~/.bashrc
环境变量加载初始化过程:
四.加载流程测试
1.切换shell环境执行脚本文件介绍
在执行一个脚本文件时可以指定具体shell环境进行执行脚本文件,这个就是切换shell环境执行脚本
2.shell登录环境执行脚本文件语法
sh/bash -l/--login 脚本文件
-
含义:先加载shell登录环境流程初始化环境变量,再执行脚本文件
3.shell非登录环境变量执行脚本文件语法
bash # 加载shell非登录环境
sh/bash 脚本文件 # 直接执行脚本文件
-
含义:先执行加载shell非登录环境流程初始化环境变量,再执行脚本文件
4.案例演示
1.需求
shell登录环境会运行/etc/profile
,shell非登录环境会运行./bashrc
,在/etc/profile
与当前用户./bashrc
文件分别设置环境变量数据,然后在shell脚本文件中输出环境变量数据,最后切换不同环境执行shell脚本文件观察验证上面的流程运行。
2.分析
1.编辑/etc/profile
,增加环境变量VAR1=VAR1
2.编辑/root/.bashrc
,增加环境变量VAR2=VAR2
3.创建demo1.sh,作用是读取环境变量数据进行打印
# 输出环境变量VAR1
# 输出环境变量VAR2
4.以shell非登录环境执行demo1.sh脚本文件,观察只会输出VAR2,不会输出VAR1
5.以shell登录环境执行demo1.sh脚本文件,观察会输出VAR1和VAR2
3.环境变量定义到哪里呢?/etc/profile和/etc/bashrc的区别?
需要登陆的执行shell脚本读取的环境变量配置在:/etc/profile
、/当前用户/.bash_profile
不需要登陆的用户执行的shell脚本读取的环境变量配置在:/当前用户/.bashrc
、/etc/bashrc
五.识别shell环境类型
1.目标
理解如何识别shell登陆环境和非登陆环境
2.语法
使用$0
识别环境语法
echo $0
输出 -bash 代表: shell登陆环境
输出 bash 代表: shell非登陆环境
注意: 这个$0 环境变量如果用在子shell中(shell脚本文件)输出shell脚本本身的文件名
bash命令语法
bash
用于切换为shell非登录环境
六.详细切换shell环境
1.切换环境方式
-
切换环境方式1:直接登录系统
-
切换环境方式2:su 切换用户登陆
# 切换到指定用户,加载shell登录环境变量
su username --login
or
su username -l
# 加载非登录环境变量
su username
- 切换环境方式3:bash 切换