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 开始的,这与许多编程语言一致。

相关推荐
陈煜的博客26 分钟前
paddleOcr -Linux 下的 Conda 安装
linux·运维·conda
挥剑决浮云 -1 小时前
Linux 网络编程
linux·运维·c语言·网络·笔记
北 染 星 辰1 小时前
Linux---常用shell脚本
linux·运维·服务器
TsengOnce3 小时前
Docker安装稳定版本nginx-1.26.2
linux·nginx·docker
Raymond运维3 小时前
Rocky、Almalinux、CentOS、Ubuntu和Debian系统初始化脚本v9版
linux·运维·ubuntu·centos·debian·rocky·almalinux
荣世蓥4 小时前
6. ARM_ARM指令寻址
linux·运维·arm开发
@daviiid4 小时前
关于adb shell登录开发板后terminal显示不完整
linux·adb
LuckyLay4 小时前
Ubuntu安装配置MySQL(远程登录)
linux·mysql·ubuntu·远程登录
sakabu4 小时前
Linux应用项目之量产工具(三)——文字系统
linux·学习·freetype·量产工具·linux项目