Shell脚本学习_环境变量深入

news2024/11/25 5:12:05

目录

1.Shell环境变量深入:自定义系统环境变量

2.Shell环境变量深入:加载流程原理介绍

3.Shell环境变量深入:加载流程测试

4.Shell环境变量深入:识别与切换Shell环境类型


1.Shell环境变量深入:自定义系统环境变量

1、目标:

能够自定义系统级环境变量

2、全局配置文件/etc/profile应用场景:

当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量,供给所有的Shell程序使用。以后只要是所有的Shell程序或命令使用的变量,就可以定义在这个文件中。

3、案例演示:

1.需求:

/etc/profile定义存储自定义系统级环境变量数据

2.创建环境变量步骤:

1.编辑/etc/profile全局配置文件

#增加命令:定义变量VAR1=VAR1并导出为环境变量

#扩展:vim里面的命令模式使用G快速定位到文件末尾,gg快速回到文件开头

2.重载配置文件/etc/profile,因为配置文件修改后要立刻加载里面的数据,语法:

source /etc/profile

3.在Shell环境中读取系统级环境变量VAR1

4.小结:

1.系统级全局配置文件

2.设置环境变量:export var_name=value,注意:环境变量建议变量名全部大写

3.修改了/etc/profile文件后,要立刻加载修改的数据需要重载配置文件:source /etc/profile


2.Shell环境变量深入:加载流程原理介绍

1.目标:

1.能够说出交互式Shell与非交互式Shell

2.能够说出登录Shell与非登录Shell环境

2.Shell工作环境介绍:

用户进入Linux系统就会初始化Shell环境,这个环境会加载全局配置文件和用户个人配置文件中的环境变量,每个脚本文件都有自己的Shell环境

3.Shell工作环境分类:

1、交互式与非交互式shell:

1.交互式Shell

与用户进行交互、互动,效果就是用户输入一个命令,Shell环境立刻反馈响应。

1.非交互式Shell

不需要用户参与就可以执行多个命令,比如一个脚本文件含多个命令,直接执行并给出结果。

2、登录Shell与非登录Shell环境:

1.Shell登录环境:

需要用户名\密码登录的Shell环境

2.Shell非登录环境:

不需要用户名\密码进入的Shell环境或执行脚本文件

注意:不同工作环境加载环境变量的流程不一样

3、环境变量初始化流程:

1.全局配置文件

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

2.个人配置文件

当前用户/.bash_profile

当前用户/.bashrc

环境变量加载初始化过程:

一般情况下都是直接针对全局配置进行操作

4、小结:

1.能够说出交互式Shell与非交互式Shell

交互式:需要用户参与互动的Shell环境,输入一个命令,环境就立刻响应反馈结果

非交互式:只执行命令,不需要用户的参与

2.能够说出登录Shell与非登录Shell环境

Shell登录环境:需要用户名\密码登录的Shell环境。

Shell非登录环境:不需要用户名\密码进入的Shell环境或执行脚本文件。


3.Shell环境变量深入:加载流程测试

1、目标:

1.理解Shell环境变量的加载流程测试

2.能够知道环境变量应该配置在哪里

2、切换Shell环境执行脚本文件介绍:

在执行一个脚本文件时可以指定具体Shell环境进行执行脚本文件,这个就是切换Shell环境执行脚本。

1.Shell登录环境执行脚本文件语法:

sh/bash -l/--login 脚本文件
#含义:先加载Shell登录环境流程初始化环境变量,再执行脚本文件

2.Shell非登录环境变量执行脚本文件语法:

bash #加载Shell非登录环境
sh/bash 脚本文件 #直接执行脚本文件
#含义:先执行加载Shell非登录环境流程初始化环境变量,再执行脚本文件

3、测试案例:

1.需求:

Shell登录环境会运行/etc/profile

Shell非登录环境会运行/.bashrc

在/etc/profile与当前用户/.bashrc文件分别设置环境变量数据,然后在shell脚本文件中输出环境变量数据,最后切换不同环境执行shell脚本文件观察验证上面的流程运行

2.分析:

1.清理工作,清理/etc/profile文件中VAR1环境变量进行删除,并且重载文件 

2.编辑/etc/profile,增加环境变量VAR1=VAR1

3.编辑/root/.bashrc,增加环境变量VAR2=VAR2

4.创建demo1.sh文件,读取环境变量数据进行打印

#输出环境变量VAR1
#输出环境变量VAR2
5.以Shell非登录环境执行demo1.sh脚本文件,观察只会输出VAR2,不会输出VAR1

6.以Shell登录环境执行demo1.sh脚本文件,观察会输出VAR1和VAR2

4、小结:

1.Shel环境变量初始化加载原理过程:

1.shell登录环境初始化过程:

/etc/profile--》/etc/profile.d/*.sh--》~/.bash_profile--》~/.bashrc.》/etc/bashrc

2.shell非登录环境初始化过程:

~/.bashrc--》/etc/bashrc--》/etc/profile.d/*sh

2.那么以到底将环境变量定义到哪里呢?/etc/profile与/etc/bashrc的区别?

需要登录的执行的shel脚本读取的环境变量配置在:/etc/profile、/当前用户/.bash profile不需要登录的用户执行的shell脚本读取的环境变量配置在:/当前用户/.bashrc、/etc/bashrc


4.Shell环境变量深入:识别与切换Shell环境类型

1、目标:

理解如何识别Shell登录环境与非登录环境。

2、语法:

echo $0  #识别环境语法

-bash为登录环境、bash为非登录环境。 

3、切换环境方式1:

语法1:

su 用户名 --login
或
su 用户名 -l
#切换到指定用户,加载Shell登录环境变量

 

语法2:

su 用户名
#切换到指定用户,加载Shell非登录环境变量

4、切换环境方式2:

语法1:

bash #加载Shell非登录环境

语法2:

bash -l Shell脚本文件 / bash --login Shell脚本文件
sh -l Shell脚本文件  /  sh --login Shell脚本文件
#先加载Shell登录环境,任何运行指定的Shell脚本文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1803623.html

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

相关文章

在Three.js中实现模型点击高亮:整合EffectComposer与OutlinePass的终极指南

效果【后期实现鼠标点击选中轮廓后给出一个弹窗显示相应的模型信息】 标签指示线参考我的上一篇文章 引言 Three.js不仅让WebGL的3D图形编程变得简单易懂,还通过其强大的扩展库支持丰富的后期处理效果,为3D场景增添无限魅力。本篇文章将引导您深入了…

5、搭建前端项目

5.1 使用vite vue搭建 win r 打开终端 切换到你想要搭建的盘 npm init vitelatest跟着以下步骤取名即可 cd fullStackBlognpm installnpm run dev默认在 http://localhost:5173/ 下启动了 5.2 用vscode打开项目并安装需要的插件 1、删除多余的 HelloWorld.vue 文件 2、安装…

vivado HW_BITSTREAM、HW_CFGMEM

HW_比特流 描述 从比特流文件创建的硬件比特流对象hw_bitstream,用于关联 在Vivado的硬件管理器功能中使用硬件设备对象hw_device 设计套件。 比特流文件是从具有write_bitstream的放置和路由设计创建的 命令硬件位流对象是使用 create_hw_bitstream命令&#xff0c…

C++ DFS

子集 78. 子集 法一:思路对每个元素进行选与不选的 选择,这样正好到最后一层 就是2的size()次方个,叶子就是节点,通过pos来控制深度 法二:通过for循环实现,且下一个栈帧的i是上一个栈帧当前元素的下一个位…

力扣每日一题85:最大矩形

题目 困难 相关标签 相关企业 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix [["1","0","1","0",&q…

C++STL初阶(3):string模拟实现的完善

1.流提取>>的优化(利用缓存区的思想) istream& operator>>(istream& is,string& str) {str.clear();char c;c is.get();while (c ! \0 && c ! \n) {str c;c is.get();}return is; } 在上文的对string的实践中&#…

高考作文:时光之河,逐梦前行

时光之河,奔流不息,如同我们的人生旅途,充满了未知与挑战。站在2024年的高考门槛前,我们回望过去,展望未来,心中充满了期待与憧憬。 首先,让我们回顾一下这条时光之河中的点滴。过去的岁月里&am…

分享一个用python写的本地WIFI密码查看器

本章教程,主要分享一个本地wifi密码查看器,用python实现的,感兴趣的可以试一试。 具体代码 import subprocess # 导入 subprocess 模块,用于执行系统命令 import tkinter as tk # 导入 tkinter 模块,用于创建图形用…

vb开源项目推荐:PhotoDemon9.0一键批量去除图片水印

PhotoDemon 9.0作为一款开源免费的照片编辑器,提供了丰富的图片编辑和处理功能,可以通过PhotoDemon的批处理功能结合一些编辑技巧,来实现批量去除图片水印的目的。 以下是一个可能的步骤指南,用于在PhotoDemon 9.0中通过批处理间…

利用keepalived对zabbix-server做高可用,部署安装keepalived

有2台机器,每台都有1个zabbix-server,然后再每台上再装一个keepalived https://www.keepalived.org/download.html 1,创建安装路径 mkdir /usr/share/keepalived/2,在这个安装路径下面下载keepalived的软件包 我选的版本是1.3…

据报道,FTC 和 DOJ 对微软、OpenAI 和 Nvidia 展开反垄断调查

据《纽约时报》报道,联邦贸易委员会 (FTC) 和司法部 (DOJ) 同意分担调查微软、OpenAI 和 Nvidia 潜在反垄断违规行为的职责。 美国司法部将牵头对英伟达进行调查,而联邦贸易委员会将调查 OpenAI 与其最大投资者微软之间的交易。 喜好儿网 今年 1 月&a…

记录:linux桌面管理基础-X11协议(X window system)

1、认识X11 X11是X协议,版本号为11。X协议是专门被设计为linux桌面管理服务的,而linux桌面环境不像windows那样作为系统内核的一部分,作为一个普通程序运行在用户态上。该协议的设计初衷是为了linux的图形界面满足跨平台、跨网络、与具体硬件…

JVM面试基本问题整理

文章目录 1、说下对JVM内存模型的理解2、运行时常量池的位置3、常量池和运行时常量池的区别4、内存溢出和内存泄漏5、Java 对象大小计算6、GCROOT都有什么7、常用的JVM启动参数有哪些8、TLAB 1、说下对JVM内存模型的理解 1)线程私有区域 程序计数器(Pro…

ROS学习记录:栅格地图格式

一、机器人导航所使用的地图数据,就是ROS导航软件包里的map_server节点在话题 /map 中发布的消息数据,消息类型是nav_msgs消息包中的OccupancyGrid,它的中文意思的占据栅格,是一种正方形小格子组成的地图。 二、对障碍物进行俯视&…

单片机+TN901非接触式红外测温设计

摘要 温度测量技术应用十分广泛,而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中,要求测量温度用的传感器不能与被测物体相接触,这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设计的…

搭建python虚拟环境,并在VSCode中使用

创建环境 python -m venv E:\python\flask\venv激活环境 运行下图所示的bat文件 退出环境 执行下面的语句 deactivateVSCode中配置: ①使用CTRLshiftp命令,使用CTRLshiftp命令,输入: Python: Select Interpreter②选择之前创建…

C++ 11 【线程库】【包装器】

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:C修炼之路⏪   🚚代码仓库:C高阶🚚   🌹关注我🫵带你学习更多C知识   🔝🔝 目录 前言 一、thread类的简单介绍 get_id…

IO进程线程(七)代码替换函数、守护进程

文章目录 一、代码替换函数(一)system函数(二)exec函数族 二、守护进程(一)创建1. 脱离父进程影响2. 脱离原会话组和进程组的影响3.修改进程工作目录4. 修改进程创建文件的掩码5. 关闭从父进程继承的文件描…

轻松搞定阿里云域名DNS解析

本文将会讲解如何设置阿里云域名DNS解析。在进行解析设置之前,你需要提前准备好需要设置的云服务器IP地址、域名以及CNAME记录。 如果你还没有云服务器和域名,可以参考下面的方法注册一个。 申请域名:《Namesilo域名注册》注册云服务器&…

[Cloud Networking] Layer Protocol (continue)

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. DHCP Protocol3.1 DHCP 三种分配方式3.2 DHCP 攻击 4. IPSEC / MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路:通过阻断冗余…