Shell:环境变量深入

全局配置文件/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环境

image-20210511135221514

环境变量初始化流程

image-20210511133945500

登陆环境执行语法

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非登录环境

image-20210511140119998

image-20210511140301530

logout命令语法

logout

logout命令: 用于退出Shell登录环境

exit命令语法

exit

exit命令: 用于退出Shell登录或非登录环境

logout 只能退出Shell登录环境

exit 可以退出Shell登录与非登录环境

原文地址:https://www.cnblogs.com/wwjj4811/p/14755032.html