当前位置: 首页 > article >正文

Shell脚本2 -- 永久环境变量与字符串操作

声明:
本文的学习内容来源于B站up主“泷羽sec”视频【shell编程(2)永久环境变量和字符串显位】的公开分享,所有内容仅限于网络安全技术的交流学习,不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题,请联系本人,我将立即删除相关内容。
本文旨在帮助网络安全爱好者提升自身安全技能,并严格遵守国家法律法规。任何人利用本文中的信息从事违法活动,均与本文作者和“泷羽sec”无关。请读者自觉遵纪守法,合理合法使用相关知识。


1 常见环境变量

家目录 root用户

echo $HOME

Pasted image 20241118111139
查看环境变量$PATH

echo $PATH

Pasted image 20241118111154
在Linux中,$PATH 是一个环境变量,用于定义系统在运行命令时搜索可执行文件的目录列表。

  • /usr/bin 目录的作用
    • /usr/bin 是Linux系统中的一个标准目录,通常存放用户可执行的常用命令和二进制文件。
    • 典型的命令如 ls, cp, mv, grep 等可能位于 /usr/bin
  • $PATH 中的 /usr/bin
    • 如果 PATH 环境变量包含 /usr/bin,说明系统在运行命令时,会在该目录中查找命令。
    • 例如,当你在终端输入 ls 时,系统会按顺序在 $PATH 中的目录中查找 ls 的可执行文件。如果 /usr/bin/ls 存在且有执行权限,就会运行它。
  • PATH 的查找机制
    • 系统按从左到右的顺序依次查找 $PATH 中列出的目录,找到匹配的命令后立即执行。
    • 如果 $PATH 中不包含 /usr/bin,则位于该目录的命令将无法直接运行,除非使用绝对路径。

2 永久执行自定义脚本,修改环境变量

呢么为了可以直接在命令行运行我们的脚本,就可以将自己写的脚本放入/usr/bin目录下,或者将脚本直接添加到$PATH里。

2.1 方法一:

将脚本直接移动到/usr/bin目录下,这样1.sh就可以直接当做命令来运行
Pasted image 20241118112038
Pasted image 20241118112048

2.2 方法二:

将整个/root目录添加到环境变量中去

export PATH=/root:$PATH

Pasted image 20241118112625
Pasted image 20241118112647

2.3 方法三:

将修改环境变量的代码写到.bashrc然后使用source命令运行,.bashrc在用户根目录下,当前为root用户,则在/root下,或者可以使用符号~代替根目录
备份.bashrc.bashrc.bak

cp ~/.bashrc ~/.bashrc.bak

修改.bashrc

export PATH=/root:$PATH

使用source运行.bashrc

source ~/.bashrc

尝试运行1.sh脚本成功
Pasted image 20241118115314
但开一个新窗口运行但是修改失败

原因:当前使用的shellzsh,并不是bash,所以修改bashrc无效,需要修改zshrc
查看所有shell

cat /etc/shells

查看当前默认使用的shell

echo $0

echo $SHELL

Pasted image 20241118145902
备份.zshrc.zshrc.bak

cp ~/.bashrc ~/.bashrc.bak

修改.zshrc

export PATH=/root:$PATH

使用source运行.bashrc

source ~/.bashrc

尝试运行1.sh
Pasted image 20241118150137
新开一个窗口执行
Pasted image 20241118150158
若想变回原来的命令行提示符,运行source ~/.zshrc.bak即可

3 字符串相关操作

创建字符串

str="hello world"

查看字符串长度

echo ${#str}

截取字符串

echo ${variable:offset:length}

例如,截取strworld部分,即偏移(offset)6个字符,长度(length)为5。

echo ${str:6:5}

Pasted image 20241118152019


http://www.kler.cn/a/405276.html

相关文章:

  • 【AIGC】如何使用高价值提示词Prompt提升ChatGPT响应质量
  • Compose Navigation快速入门
  • Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
  • 丹摩|丹摩助力selenium实现大麦网抢票
  • 【生成数据集EXCEL文件】使用生成对抗网络GAN生成数据集:输出生成数据集EXCEL
  • Proxy 在 JavaScript的用法
  • 以太坊交易处理全流程:数据采集、价格查询与问题解决
  • Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好
  • 测试实项中的偶必现难测bug之模糊匹配逻辑
  • 基于IPMI_SSH的服务器硬件监控指标解读
  • Leetcode 完全二叉树的节点个数
  • application/json 和 application/x-www-form-urlencoded 区别
  • php:使用socket函数创建WebSocket服务
  • Verilog HDL可综合与不可综合语句
  • OpenCV基本图像处理操作(五)——图像数据操作
  • git commit -m ‘last‘什么意思和git add.什么意思
  • 每日学习笔记005:(C++)迭代器
  • Spring Boot核心概念:自动配置
  • 国土变更调查拓扑错误自动化修复工具的研究
  • 湘潭大学人工智能考试复习1(软件工程)
  • 应用系统开发(13) 在 Xilinx FPGA 中实现自定义累加平均低通滤波器
  • 魔众题库系统 v10.0.0 客服条、题目导入、考试导航、日志一大批更新
  • ISO 21434标准:汽车网络安全管理的利与弊
  • XCVU13P板卡设计原理图:509-基于XCVU13P的4路QSFP28光纤PCIeX16收发卡
  • mysqldbcompare 使用及参数详解
  • 【HarmonyOS】鸿蒙应用接入微博分享