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

目录

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脚本文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8.3 Go 包的组织结构

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

WPS JS宏获取自动筛选后的行数

//WPS JS宏获取自动筛选后的行数 function getFilterRowCnt(shtRng)//shtRng表示筛选目标工作表范围 {let lngRowCnt 0;for(let rngCell of shtRng.SpecialCells(xlCellTypeVisible).Areas)//获取自动筛选后的单元格行数{lngRowCnt lngRowCnt rngCell.Rows.Count;}return ln…

从0到1:企业办公审批小程序开发笔记

可行性分析 企业办公审批小程序,适合各大公司,企业,机关部门办公审批流程,适用于请假审批,报销审批,外出审批,合同审批,采购审批,入职审批,其他审批等规划化…

关于音乐播放器与系统功能联动功能梳理

主要实现功能: 一、通知栏播放显示和控制 二、系统下拉栏中播放模块显示同步 三、与其他播放器状态同步:本应用播放时暂停其他应用播放,进入其他应用播放时,暂停本应用的后台播放 通知栏播放的显示和控制: 通过Not…

RTKLIB之RTKPLOT画图工具

开源工具RTKLIB在业内如雷贯耳,其中的RTKPLOT最近正在学习,发现其功能之强大,前所未见,打开了新的思路。 使用思博伦GSS7000卫星导航模拟器,PosApp软件仿真一个载具位置 1,RTKPLOT支持DUT 串口直接输出的NMEA数据并…

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)提供模型代码和训练好的模型 前言 目前关于使用深度学习对文本自动添加标点符号的研究并不多见,已知的开源项目也较少,而对该领域的详细介绍更是稀缺。然而&#x…

苹果手机微信如何直接打印文件

在快节奏的工作和生活中,打印文件的需求无处不在。但你是否曾经遇到过这样的困扰:打印店价格高昂,让你望而却步?今天,我要给大家介绍一款神奇的微信小程序——琢贝云打印,让你的苹果手机微信直接变身移动打…

React Hooks路由传参

场景:如何把想要的参数带到跳转过去的页面里呢?很简单 上代码: 在你需要跳转的页面上 引入 Link用来跳转使用 Link跳转并携带参数 然后需要什么参数就带什么过去喽 这里record里面存的就是我的数据 我只需要id和state然后到你跳转过去的页面…

MySQL-备份(三)

备份作用:保证数据的安全和完整。 一 备份类别 类别物理备份 xtrabackup逻辑备份mysqldump对象数据库物理文件数据库对象(如用户、表、存储过程等)可移植性差,不能恢复到不同版本mysql对象级备份,可移植性强占用空间占…

【C语言】详解函数(上)(庖丁解牛版)

文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块&#xff…

算法—字符串操作

394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string longestCommonPrefix(vector<string>& strs) { string retstrs[0];//***1***记得先要初始化ret&#xff0c;作为第一个比较值for(int i0;i<strs.size();i){retfoundcom…

聪明人社交的基本顺序:千万别搞反了,越早明白越好

聪明人社交的基本顺序&#xff1a;千万别搞反了&#xff0c;越早明白越好 国学文化 德鲁克博雅管理 2024-03-27 17:00 作者&#xff1a;方小格 来源&#xff1a;国学文化&#xff08;gxwh001&#xff09; 导语 比一个好的圈子更重要的&#xff0c;是自己优质的能力。 唐诗宋…

视觉SLAM十四讲:从理论到实践(Chapter9:后端1)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、目标 1.理解后端的概念。 2.理解以EKF为代表的滤波器后端的工作原理。 3.理解非线性优化的后端&#xff0c;明白稀疏性是如何利用的。 4.使用g2o和Ceres实际操作…

代码随想录算法训练营第36期DAY49

DAY49 139单词拆分 没有思路。 回溯法 回溯怎么做呢&#xff1a;拼接str&#xff0c;看能不能拼出来。注意每个单词能用多次&#xff0c;不是用了就没。 但是语法还是难写。 自己的思路不好&#xff0c;题解思路&#xff1a;枚举所有分割字符串&#xff0c;判断是否在字典…

史上最有趣嫁妆:晋公盘的传奇

在遥远的春秋时代&#xff0c;晋国的晋文公为他的女儿用心打造了一件独特的嫁妆——晋公盘。 晋公盘由青铜制成&#xff0c;形状独特&#xff0c;工艺精湛。在晋公盘内底中央&#xff0c;一对精美的浮雕龙盘绕成圆形&#xff0c;盘上饰有鸟、龟、鱼、蛙等多种动物&#xff0c;最…

利用R包“Phenotype”对表型值进行检查

首先&#xff0c;你需要确保你已经安装了R和RStudio&#xff08;如果你想用RStudio的话&#xff09;。然后&#xff0c;你可以按照以下步骤进行操作&#xff1a; 加载数据&#xff1a;首先&#xff0c;你需要加载你的表型数据。如果你的数据是以CSV、Excel等格式保存的&#x…

设计模式-中介者(调停者)模式(行为型)

中介者模式 中介者模式是一种行为型模式&#xff0c;又叫调停者模式&#xff0c;它是为了解决多个对象之间&#xff0c;多个类之间通信的复杂性&#xff0c;定义一个中介者对象来封装一些列对象之间的交互&#xff0c;使各个对象之间不同持有对方的引用就可以实现交互&#xf…

LabVIEW伺服电机测控系统

LabVIEW伺服电机测控系统 开发了一个基于LabVIEW的伺服电机测控系统。系统主要用于精确控制电机的运动&#xff0c;以达到高效率和高精度的要求。通过使用LabVIEW软件和配套的硬件&#xff0c;开发者能够实现对伺服电机的实时监控和控制&#xff0c;进而提高整个系统的性能和可…

Linux-常用命令-常用设置

1.帮助类命令 1.man命令-获得帮助信息 man [命令或配置文件]例&#xff1a;查看ls命令的帮助信息 man ls输入 ZZ 退出帮助2.服务管理类命令 1.centos7语法 1.1 临时开关服务命令 开启服务&#xff1a; systemctl start 服务名 关闭服务&#xff1a; systemctl stop 服务…

LDR6020一拖二快充线:高效充电的新选择

LDR6020一拖二快充线&#xff1a;高效充电的新选择 随着移动设备的普及和功能的日益增强&#xff0c;电池续航成为了用户关注的重点之一。为了满足用户对于快速充电的需求&#xff0c;各大厂商纷纷推出了各种快充技术和产品。在这个背景下&#xff0c;LDR6020一拖二快充线凭借…