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

Linux中的全局环境变量和局部环境变量

Linux中的全局环境变量和局部环境变量

      • 一、全局环境变量
      • 二、局部环境变量
      • 三、 设置全局环境变量

bash shell用一个叫作环境变量 (environment variable)的特性来存储有关shell会话和工作环境的信息(这也是它们被称作环境变量的原 因)。这项特性允许你在内存中存储数据,以便程序或shell中运行的 脚本能够轻松访问到它们。这也是存储持久数据的一种简便方法。
在bash shell中,环境变量分为两类 :

  • 全局变量
    • 全局环境变量对于shell会话和所有生成的子shell都是可见的
  • 局部变量
    • 局部变量只对创建它们的shell可见。

一、全局环境变量

1、 通过 env 这个命令可以查看系统的所有全局变量 。系统默认的全局变量名,基本都是大写的。 如果是自己创建的局部变量或是shell脚本,最好就值使用小写字母。

2、我们也可以通过echo $SHELL 或者printenv SHELL 这样的方式,来查看单个变量的值 。(SHELL是我们想知知道的变量的名字)
在这里插入图片描述

在这里插入图片描述

二、局部环境变量

1、局部环境变量只能在定义它们的进程中可见

可以通过echo $变量名 这种格式来打印出局部变量名。 或者set | grep 变量名 这种方式 ,值得注意的是env 和 printenv 这种方式只打印全局变量。在这里插入图片描述

在这里插入图片描述

2、设置局部环境变量
在shell 进程里设置环境变量的操作和給变量赋值类似,使用 一个等号就可以 my_var= hello_world,比较特别的是变量名、等号和值之间不能有空格。否则bash shell就会把值变量的值my_var当成一个单独的命令

在这里插入图片描述

3、 局部环境变量的使用范围

  • 设置了局部环境变量后,就能在shell进程的任何地方使用它了。但是,如果这个shell生成了另外一个子shell,它在子shell中就不可用。然后当你退出子shell并回到原来的shell时,这个局部环境变量依然可用

在这里插入图片描述

  • 同理,如果在子进程中设置了一个局部环境变量,那么一旦你退出了子进程,那个局部环境变量就不可用

  • 如果我们想在父shell 进程中的环境变量,可以被 子shell进程调用,那么就要把这个环境变量设置成全局环境变量

三、 设置全局环境变量

1、设置全局环境变量,是通过export 命令 来设置的,比如:
export my_var="I am Global now"
或者分两步

my_var="I am Global now"    
export  my_var    

2、 设置完成后,我们在子进程中也可以使用这个全局环境变量了。
但是有注意的点是 ,如果我们在父进程里设置全局变量,子进程可以使用,但是子进程设置的全局变量,父进程是没办法调用的。全局环境变量也只能是从父到子传这种场景如下:

3、当父shell定义一个全局环境变量,在子shell中,这个全局环境变量被重新定义了一次,退出子shell, 这个全局环境变量还是之前的值。

在这里插入图片描述

4、 删除环境变量

删除环境变量我们使用unset + 变量名 .我们在读取变量的时候要加上$这个提取符号。
在这里插入图片描述
总结:

  • 1、环境变量的设置有两种,一种就是普通的給变量赋值是我们说的局部变量赋值,另一种是全局环境变量赋值。
  • 2、 无论哪种,子进程的值,父进程是无法读取到的,同样也无法改变。
  • 3、子进程和父进程里非全局环境变量,都是相互独立的(进程之间资源不共享)。
  • 4、 子进程如果想要读取到父进程的值,需要设置成全局环境变量。
  • 5、子进程中可以对全局环境变量重新定义,改变,删除,但是影响不到父进程里的全局环境变量。
http://www.lryc.cn/news/384320.html

相关文章:

  • 【研究】AI大模型需要什么样的硬件?
  • 人工智能--自然语言处理NLP概述
  • 基于Java微信小程序火锅店点餐系统设计和实现(源码+LW+调试文档+讲解等)
  • SpringCloud_GateWay服务网关
  • 使用Dropout大幅优化PyTorch模型,实现图像识别
  • Vue3中的常见组件通信(超详细版)
  • Stm32的DMA的学习
  • 应用安全(补充)
  • 鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 app和deviceConfig的切换
  • 通过命令行配置调整KVM的虚拟网络
  • Apache POI操作excel
  • Python错误集锦:faker模块生成xml文件时提示:`xml` requires the `xmltodict` Python library
  • Vue3-尚硅谷笔记
  • RockChip Android12 System之MultipleUsers
  • 第12天:前端集成与Django后端 - 用户认证与状态管理
  • 在ROS2中蓝牙崩溃的原因分析
  • 【PythonWeb开发】Flask中间件钩子函数实现封IP
  • 可以一键生成热点营销视频的工具,建议收藏
  • Unity Meta Quest 开发:关闭 MR 应用的安全边界
  • 4.sql注入攻击(OWASP实战训练)
  • 前端Web开发HTML5+CSS3+移动web视频教程 Day1
  • 中医实训室:在传统针灸教学中的应用与创新
  • React Hooks 小记(七)_useReducer
  • 甲子光年专访天润融通CEO吴强:客户经营如何穿越低速周期?
  • 还不到6个月,GPTs黄了
  • IOS Swift 从入门到精通:BlurEffect BlendMode stroke
  • 西木科技Westwood-Robotics人型机器人Bruce配置和真机配置
  • 【招聘贴】JAVA后端·唯品会·BASE新加坡
  • CVPR2024|vivo提出使用对抗微调获得泛化性更强的SAM,分割性能直接登顶 SOTA!
  • 程序员必备的ChatGPT技巧:从代码调试到项目管理