知识储备
- Shell是交互式命令解释器,用户是不允许直接访问内核和操作的,那么Shell就是这样一个中间件,他负责对用户输入的命令做语法分析、语义分析,判断要做什么样的操作,有哪些增强功能选项,操作什么样的对象,并且通过自身提请内核启动进程,是一个用户和内核的代理人;
- 广义的Shell包含GUI和CLI,而狭义的Shell仅仅指的是CLI;
- Linux支持众多Shell实例,如tsh、zsh等等,使用最广泛的是Bash[众多Shell中的一个实例];
- 请注意,shell自身是一个命令环境,那么shell中自然可以嵌套shell,默认CentOS中登录后使用的是Bash,如果在CLI中继续输入zsh,那么你所属的环境就是-->bash-->zsh,请注意你的位置哦。
Bash环境配置文件分类
什么是变量?
- 变量本质上是内存空间中的一块指定区域,其数据内容会发生变化;
- 变量名本质是个指针,指向这个数据变化的内存空间,那么在命令执行或者操作时,只需要通过变量名,就能够随时调用那个变化的数据,很方便
变量的类型
在Linux中,大体上变量有5种类型
- 环境变量:作用范围是当前Shell进程和其子Shell进程
- 本地变量:仅作用域当前Shell进程
- 局部变量:仅作用当前Shell进程中的某个代码片段[通常是函数上下文]
- 位置变量:形如$1 $2等,主要是为了Bash脚本传递参数
- 特殊变量:$? 可以查看上一条命令的执行状态[请区分执行结果和执行状态不是一回儿事]
如何定义与撤销变量?
- 之前说过,Bash是Shell的一个实例,自身就是一个命令环境,那么他本身也包含内置变量,这些变量我们可以通过#man bash中来查看,可以使用/Variables来快速找到变量;
- 由于Bash是弱类型的编程语言,变量可以未经生命直接使用,只不过是Empty值罢了;
- 定义本地变量
- Name=Value
- 使用set可以查看定义的本地变量
- 定义环境变量
- Export Name=Value
- Declare -x Name=Value
- 使用env、printenv、export可以查看定义的环境变量
- 撤销变量
- unset Name即可
- 变量的生存周期就是当前的Shell进程,进程终止变量自然终止
如何引用变量?
- ${name} 通常{}可省略,但是有时候出于特殊目的,是不可以省略的,比如下面的情况
- 想新增环境变量而不想覆盖原有变量也是这个道理
export PATH=”$PATH:/usr/test/bin”
- ‘‘单引号,强引用,不会发生变量替换
- ""双引号,弱引用,会发生变量替换
Shell登录类型与Bash配置文件作用次序
Shell登录类型大致有2种:
- 交互式登录
- 直接通过Console、VTY、ssh等连接方式以输入账号密码的形式登录进系统;
- 通过#su -l UserName实现的切换用户,请注意-l是以login形式
- 非交互式登录
- GUI界面下打开的终端窗口;
- 执行脚本:编写脚本必须在开头指定shell,脚本执行会自动打开该shell
- 通过#su Username实现的无参数切换用户
Bash配置文件作用次序
- 交互式登录
- /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile -->~/etc/bashrc --> ~/.bashrc
- 非交互式登录
- ~/.bashrc ---> /etc/bashrc ---> /etc/profile.d/*.sh
编辑的配置文件如何生效?
- 重新登录即可;
- 让当前的shell进程重新读取配置文件
#source /PATH
# . /PATH
注意:可能有副作用,不小心读多次会追加的,如果你能确保只读了一次,可以忽略此副作用
时间: 2024-08-01 15:24:48