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

news2024/11/19 19:12:09

声明:
本文的学习内容来源于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.coloradmin.cn/o/2243575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

红日靶场-1详细解析(适合小白版)

红日靶场涉及内网知识,和前期靶场不太一样,前期靶场大部分都是单个靶机获得root权限,而这一次更综合,后期也会继续学习内网知识,继续打红日靶场,提高自己的综合技能。 环境搭建 首先本题的网络拓扑结构如…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历,分享给大家 作者是如何在没有 iOS 开发经验的情况下,借助 AI(如 Claude 3 模型)成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月,ChatGPT 诞生并迅速引发全球关注。…

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

【SpringBoot】发送简单邮件

在Spring Boot中发送邮件是一个常见的需求&#xff0c;通常使用JavaMail API结合Spring的邮件抽象来实现。Spring Boot提供了一个简单的配置和使用邮件发送的方法。 简单使用 添加依赖 首先&#xff0c;你需要在你的pom.xml文件中添加Spring Boot Starter Mail依赖。 <d…

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候&#xff0c;创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候&#xff0c;只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import&#xff0c;如果只导入模…

ABAP开发学习——SNRO

SAP凭证号码的指定分为外部给号和内部给号。 Internal number range即内部给号,指系统根据预先维护好的号码范围&#xff08;只能是阿拉伯数字&#xff09;依序给号,给出已有数字的下一个编号。 External number range即外部给号,后台配置时指指定一个号码范围&#xff08;可以…

数据科学与SQL:如何计算排列熵?| 基于SQL实现

目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大&#xff0c;说明系统越混乱&#xff0c;携带的信息越少&#xff1b;熵越小&#xff0c;说明系统越有序&#xff0c;携带的信息越多。在传感…

CSS(8):盒子阴影与文字阴影

一&#xff1a;盒子阴影text-shadow属性 1.box-shadow&#xff1a;h-shadow v-shadow blur spread color inset; 默认的是外部阴影outset&#xff0c;不能写在代码上 2.鼠标经过盒子后的阴影 rgba透明度 3.文字阴影 text-shadow:水平偏移 垂直偏移 模糊度 阴影颜色; 注意点…

《Python编程实训快速上手》第七天--文件与文件路径

该章节将使用Python在硬盘上创建、读取和保存文件 一、文件与文件路径 1、Windows中使用\以及macOS和Linux中使用/ 使用pathlib模块中的Path()函数进行文件名和目录的拼接,返回文件路径字符串 from pathlib import Path print(Path("spam","bacon",&qu…

Springboot如何打包部署服务器

文章目的&#xff1a;java项目打包成jar包或war包&#xff0c; 放在服务器上去运行 一、编写打包配置 1. pom.xml 在项目中的pom.xml文件里面修改<build>...</build>的代码 >> 简单打包成Jar形式&#xff0c;参考示例&#xff1a; <build><fina…

Video Duplicate Finder 快速识别并去除重复的视频和图像!

文章目录 下载 后续升级 Video Duplicate Finder&#xff08;视频重复查找器&#xff09;是一款开源的跨平台视频&#xff08;以及图像&#xff09;去重软件&#xff0c;通过对比文件内容和特征&#xff0c;快速识别出重复的视频和图像文件&#xff0c;即使是被压缩裁剪过、…

Python实现基础到高级:语音验证码技术详解

目录 一、语音验证码基础 1.1 语音验证码概述 1.2 Python语音验证码库 二、Python生成语音验证码 2.1 使用captcha库生成语音验证码 2.2 使用第三方语音合成服务API生成语音验证码 三、Python识别语音验证码 3.1 语音识别技术概述 3.2 使用百度语音识别API识别语音验证…

(附项目源码)Java开发语言,215 springboot 大学生爱心互助代购网站,计算机毕设程序开发+文案(LW+PPT)

摘 要 在网络信息的时代&#xff0c;众多的软件被开发出来&#xff0c;给用户带来了很大的选择余地&#xff0c;而且人们越来越追求更个性的需求。在这种时代背景下&#xff0c;企业只能以用户为导向&#xff0c;按品种分类规划&#xff0c;以产品的持续创新作为企业最重要的竞…

后端:Spring AOP原理--动态代理

文章目录 1. Spring AOP底层原理2. 代理模式3. 静态代理4. 动态代理4.1 jdk 实现动态代理4.2 cglib 实现动态代理4.3 jdk、cglib动态代理两者的区别 1. Spring AOP底层原理 创建容器 new applicationContext()&#xff1b;Spring把所有的Bean进行创建&#xff0c;进行依赖注入…

halcon3D gen_image_to_world_plane_map的图像高精度拼接技术

基于上一篇文章&#xff0c;对gen_image_to_world_plane_map有了深刻的理解 https://blog.csdn.net/Tianwen_running/article/details/143661157?fromshareblogdetail&sharetypeblogdetail&sharerId143661157&sharereferPC&sharesourceTianwen_running&s…

STM32 独立看门狗(IWDG)详解

目录 一、引言 二、独立看门狗的作用 三、独立看门狗的工作原理 1.时钟源 2.计数器 3.喂狗操作 4.超时时间计算 5.复位机制 四、独立看门狗相关寄存器 1.键寄存器&#xff08;IWDG_KR&#xff09; 2.预分频寄存器&#xff08;IWDG_PR&#xff09; 3.重载寄存器&…

《探索 Spring 核心容器:Bean 的奇妙世界》

一、Spring 核心容器与 Bean 的关系 Spring 核心容器是 Spring 框架的重要组成部分&#xff0c;负责管理和组织应用程序中的对象&#xff0c;而 Bean 则是构成应用程序主干并由 Spring IoC 容器管理的对象&#xff0c;二者紧密相连。 Spring 的核心容器由多个模块组成&#xf…

JFlash添加自定义MCU型号

1.打开安装路径 2.在Devices里创建你想添加的MCU的文件夹并把FLM文件放入 3.Jlink目录里找到JLinkDevices.xml文件 4.修改 <!-- --><!-- G32 --><!-- --><!-- --><!-- G32F103 --><!-- --><Device><ChipIn…