云原生大佬重生,记忆逐步复苏(五:shell环境)

1:shell环境

1.1 Shell 环境的组成部分

Shell 环境是一个复杂的运行时环境,它为用户提供了交互式或非交互式的命令执行能力。Shell 环境主要由以下几部分组成:

(1) 环境变量(Environment Variables)

环境变量是全局变量,它们在当前 Shell 会话及其所有子进程中都可用。环境变量通常用于配置系统或程序的行为,例如:

PATH:定义可执行文件的搜索路径。

HOME:用户的主目录路径。

SHELL:当前使用的 Shell 程序路径。

环境变量可以通过 export 命令创建或修改。

(2) 局部变量(Local Variables)

局部变量仅在当前 Shell 会话中有效,不会传递给子进程。局部变量通常用于脚本内部的临时存储。例如:VAR=value

这个变量 VAR 是局部变量,除非使用 export 导出。

(3) 函数(Functions)

Shell 允许定义函数,这些函数可以在当前 Shell 会话中重复使用。函数可以定义局部变量,并且可以访问全局变量。例如:

my_function() {

    local local_var="Hello"

    echo $local_var

}

(4) 别名(Aliases)

别名是命令的简写形式,通常用于简化复杂的命令。别名仅在当前 Shell 会话中有效。

例如:alias ll='ls -l'

(5) Shell 选项(Options)

Shell 提供了许多选项,用于控制其行为。这些选项可以通过 set 命令设置或取消。

例如:

set -x  # 打开调试模式,显示命令的执行过程

set +x  # 关闭调试模式

(6) 预定义变量(Predefined Variables)

Shell 提供了一些预定义的特殊变量,用于访问特定的信息。例如:

$0:当前脚本或命令的名称。

$1、$2、$@、$*:脚本的参数。

$?:上一个命令的退出状态。

1.2. Shell 环境的初始化

当 Shell 启动时,它会加载一系列的配置文件,这些文件定义了初始的环境变量、别名、函数等。常见的配置文件包括:

全局配置文件:

/etc/profile:为所有用户设置全局环境变量。

/etc/bash.bashrc(对于 Bash):为所有用户设置全局别名和函数。

用户配置文件:

~/.bash_profile 或 ~/.profile:为当前用户设置环境变量。

~/.bashrc:为当前用户设置别名和函数。

这些文件在 Shell 启动时被加载,从而初始化 Shell 环境。

3. Shell 环境的动态性

Shell 环境是动态的,用户可以在运行时修改环境变量、定义新的局部变量、创建函数、设置别名等。这些修改仅对当前 Shell 会话有效,除非将它们写入配置文件。

4. 总结

Shell 环境由以下几部分组成:

环境变量:全局变量,传递给子进程。

局部变量:仅在当前 Shell 会话中有效。

函数:可重复使用的代码块。

别名:命令的简写形式。

Shell 选项:控制 Shell 行为的设置。

预定义变量:特殊变量,用于访问特定信息。

Shell 环境的初始状态由全局和用户配置文件定义,用户可以在运行时动态修改这些设置。

2:shell变量详解

Shell变量从定义者来说主要是系统预定义和用户自己定义组成的,从功能上来讲主要是分为局部变量和环境变量,

1系统预定义和用户自定义

系统预定义:shell加载的全局配置文件(/etc/bashrc)里面预定义的变量(比如$PS1)

用户自定义:用户自己在shell会话中定义的变量

2. 局部变量与环境变量

局部变量:仅在当前 Shell 会话中有效,不会传递给子进程。

环境变量:通过 export 命令导出后,不仅在当前 Shell 会话中有效,还会传递给所有子进程

  1. 查看所有变量

命令:set

作用:列出shell会话的所有变量,,别名,函数,选项等等,建议用grep辅助查看

4:创建变量

创建局部变量:直接 var=”我是谁” 变量名=变量值即可

创建环境变量:export var=“我是谁”

              或者导出已有局部变量为环境变量:export var

5:取消变量

取消变量(不管是局部还是环境变量):unset 变量名

取消环境遍历但是保留局部变量:unset -v 变量名

3:别名详解

别名是linux系统为了方便输出不用很多字符相处的替代方案

举例而言,系统预定义了别名:ll=list -l选项

如果我要列出home目录的所有文件属性

直接:ll /home 而不用 ls -l /home

如果要在shell会话中定义别名

命令:alias 别名=替代的字符

如果要在shell回话中取消别名

命令:unalias 别名

别名的特点

简单性:别名只是一个字符串替换机制,不支持复杂的逻辑或参数处理。

局部性:别名仅在当前 Shell 会话中有效,不会影响其他 Shell 会话。

持久性:通过将别名定义添加到配置文件(如 ~/.bashrc 或 ~/.zshrc),可以使别名在新

Shell 会话中生效。

覆盖性:别名可以覆盖现有的命令,但不会影响原始命令的执行。

如果你看到了这里,你的实力意味着更强了,现在的你完全对系统的基础配置已经有了初步的脉络,不再是之前的无头苍蝇了,万事开头难啊,你已经迈过了踏入linux系统的门槛了,恭喜你,少年。加油,记忆复苏之日指日可待啊(另外点一下赞吧,收藏一下博客吧,关注我一下吧,不要拒绝我,好吗)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值