Shell基础2

声明!

学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)


目录

[一、 Linux临时变量和永久变量... 1](#一、 Linux临时变量和永久变量... 1)

[(一) 临时变量... 1](#(一) 临时变量... 1)

[(二) 永久变量... 1](#(二) 永久变量... 1)

[二、 常见变量相关命令... 2](#二、 常见变量相关命令... 2)

[(一) echo HOME. 2](#(一) echo HOME. 2)

[(二) which -a ls. 2](#(二) which -a ls. 2)

[(三) echo PATH.. 2](#(三) echo PATH.. 2)

[(四) 示例... 2](#(四) 示例... 2)

[三、 临时变量... 3](#三、 临时变量... 3)

[(一) 方法一... 3](#(一) 方法一... 3)

[(二) 方法二... 3](#(二) 方法二... 3)

[四、 永久变量... 4](#四、 永久变量... 4)

[五、 字符串相关操作... 5](#五、 字符串相关操作... 5)


Linux临时变量和永久变量

临时变量

**定义:**临时变量是在当前Shell会话中临时定义的变量,它们只在当前Shell或其子Shell中有效。

**设置方法:**使用export命令可以直接在Shell命令行下定义临时变量。例如,export TEMP_VAR=value会定义一个名为TEMP_VAR的临时变量,并将其值设置为value。

**生效范围:**临时变量只在当前Shell会话中有效。一旦Shell关闭,这些变量就会失效。因此,它们适合用于一次性或临时性的环境调整。

**查看与删除:**可以使用echo命令查看临时变量的值,例如echo $TEMP_VAR。要删除临时变量,可以使用unset命令,例如unset TEMP_VAR。

永久变量

**定义:**永久变量是通过修改配置文件来定义的变量,它们会在系统重启或用户重新登录后仍然有效。

设置方法:

系统级别:要设置对所有用户都有效的永久变量,可以编辑/etc/profile文件。在这个文件中添加export命令来定义变量。修改后,需要运行source /etc/profile命令使设置立即生效,或者等待下次系统启动或用户登录时生效。

**用户级别:**要设置仅对当前用户有效的永久变量,可以编辑用户目录下的.bash_profile或.bashrc文件(取决于Shell的类型和配置)。在这些文件中添加export命令来定义变量。修改后,同样需要运行source ~/.bash_profile(或对应的.bashrc文件)来使设置立即生效。

**生效范围:**永久变量在系统重启或用户重新登录后仍然有效。对于系统级别的永久变量,它们对所有用户都有效;对于用户级别的永久变量,它们仅对当前用户有效。

**查看与删除:**与临时变量类似,可以使用echo命令查看永久变量的值。但是,要删除永久变量,需要编辑相应的配置文件并删除对应的export命令。然后,保存文件并重新加载Shell(或等待下次登录)以使更改生效。注意,直接运行unset命令只能删除当前Shell会话中的临时变量,而不能删除永久变量。


常见变量相关命令

echo $HOME

echo 是一个命令,用于在终端输出文本或变量的值。

$HOME 是一个环境变量,它包含了当前用户的主目录(也称为家目录)的路径。

which -a ls

which 是一个命令,用于查找并显示指定命令的绝对路径。

-a 是一个选项,告诉 which 命令显示所有匹配指定命令的路径,而不仅仅是第一个找到的路径。

ls 是您想要查找路径的命令。

echo $PATH

$PATH 是一个环境变量,它定义了一个由冒号分隔的目录列表。这些目录是系统搜索可执行文件的路径。

当您在终端中输入一个命令时,系统会按照 PATH 变量中列出的目录顺序来搜索这个命令的可执行文件。一旦找到,系统就会执行该命令。

示例


临时变量

方法一

创建好的1.sh脚本,添加执行权限,移动到usr/bin目录下

mv 1.sh /usr/bin

/usr/bin 是一个通常用于存放系统级可执行文件的目录。将文件移动到这里意味着您希望该文件能够像其他系统命令一样,从任何目录通过终端直接调用。

方法二

把/root目录直接添加到环境变量中让整个目录的文件都可以执行

export PATH=/root:PATH

export 是一个 shell 内建命令,用于设置或导出环境变量,使其对当前 shell 会话及其启动的任何子进程都可见。

PATH=/root:PATH 是一个赋值表达式,它将 PATH 变量的值设置为 /root 目录加上原来的 PATH 值(通过 PATH 引用)。这里,: 是目录分隔符。


永久变量

打开文件vi /usr/bin/.bashrc

添加变量export PATH=/root:PATH

变量生效 source /usr/bin/.bashrc

.bashrc 的作用:.bashrc 是一个 shell 脚本,用于 Bash shell 的个人初始化设置。当用户登录到一个基于 Bash 的终端会话时,这个文件会被执行。它通常用于设置环境变量、别名、函数等个性化配置。

/usr/bin/ 的用途:/usr/bin/ 目录通常包含系统级的可执行文件,这些文件对所有用户都是可用的。这个目录不是用来存放用户个人配置文件的。

source 命令 :source 是一个 shell 内建命令,用于在当前 shell 会话中读取并执行指定文件中的命令。这意味着,执行 source 文件名 会将文件中的内容作为当前 shell 会话的输入并执行。

字符串相关操作

假设想知道一个字符串的长度,该如何实现

str = "hello word"

echo ${#str}

${#str} 是参数扩展的一种形式,其中 # 符号用于获取变量 str 的长度。

${} 是参数扩展的基本形式,用于获取变量的值。

在 ${} 内部加上 #,后面紧跟着变量名(在这个例子中是 str),就构成了获取变量长度的语法。

显示前三个字符

echo ${str:0:3}

在 ${} 内部,冒号 : 后面跟着两个数字,分别表示起始位置和长度。在这个例子中,0 表示起始位置(字符串的第一个字符),3 表示要提取的字符数量。

需要注意的是,Bash 中的字符串索引是从 0 开始的,这与许多编程语言一致。

相关推荐
yueyuexiaokeai125 分钟前
linux kernel常用函数整理
linux·c语言
郝亚军2 小时前
ubuntu-18.04.6-desktop-amd64安装步骤
linux·运维·ubuntu
Konwledging2 小时前
kernel-devel_kernel-headers_libmodules
linux
Web极客码2 小时前
CentOS 7.x如何快速升级到CentOS 7.9
linux·运维·centos
一位赵3 小时前
小练2 选择题
linux·运维·windows
代码游侠3 小时前
学习笔记——Linux字符设备驱动开发
linux·arm开发·驱动开发·单片机·嵌入式硬件·学习·算法
Lw老王要学习4 小时前
CentOS 7.9达梦数据库安装全流程解析
linux·运维·数据库·centos·达梦
CRUD酱4 小时前
CentOS的yum仓库失效问题解决(换镜像源)
linux·运维·服务器·centos
zly35005 小时前
VMware vCenter Converter Standalone 转换Linux系统,出现两个磁盘的处理
linux·运维·服务器
Albert Edison5 小时前
【Python】函数
java·linux·python·pip