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

export在linux中的作用

在某些项目中常常使用export命令。该命令的作用是设置环境变量,并且该环境变量为当前shell进程与其启动的子进程共享。

export MODEL_NAME="stable-diffusion-v1-4"

比如以上命令,如果不采用export,设置的变量仅在当前shell命令/进程中有效。子进程则无效

子进程
一个进程有唯一的进程标识符(PID),当一个进程创建一个进程时,被创建的进程称之为子进程

举例
如果使用 VAR=“Hello” 而不使用 export VAR=“Hello”,该变量会被设置为一个局部变量(也叫做 shell 变量),仅在当前 shell 会话中可见。后续在同一个 shell 会话中执行的命令和脚本都可以访问这个变量,但如果启动一个新的子进程(例如运行另一个脚本或程序),这个子进程将无法访问该变量。
例如,以下命令在同一个 shell 会话中执行:

VAR="Hello"
echo $VAR

输出将是 Hello,因为 VAR 在同一个会话中是可见的。
但是,如果在设置了 VAR 变量后,运行另一个脚本或程序:

VAR="Hello"
./some_script.sh

在 some_script.sh 中无法访问 VAR,因为 VAR 是局部变量。要让子进程也能访问 VAR,必须使用 export 命令:

export VAR="Hello"
./some_script.sh

这样,VAR 就会成为一个环境变量,并且 some_script.sh 脚本及其他子进程都可以访问它。总结来说,不使用 export,局部变量只在当前 shell 会话中有效,不会继承到子进程中;使用 export,变量会成为环境变量,可以被子进程继承。

取消export
如果取消VAR变量,可以使用以下方式

unset VAR 
http://www.lryc.cn/news/408211.html

相关文章:

  • FFmpeg解复用器如何从封装格式中解析出不同的音视频数据
  • 测试-常见问题
  • RSA非对称加密算法(Java实现)
  • netty构建http服务器
  • Docker中安装Kafka和Kafka UI管理界面
  • 防火墙——SNAT和DNAT策略的原理及应用、防火墙规则的备份、还原和抓包
  • C# 冒泡排序
  • 网络传输层——UDP与TCP
  • Hype 4 Pro for Mac:专业级HTML5动画制作利器
  • C++ STL remove, remove_if 用法
  • HarmonyOS NEXT 开发之ArkTS基础入门
  • UE5 C++跑酷练习(Part2)
  • 从0开始搭建vue + flask 旅游景点数据分析系统(二):搭建基础框架
  • 【过滤器 vs 拦截器】SpringBoot中过滤器与拦截器:明智选择的艺术(如何在项目中做出明智选择)
  • 2024-06学习笔记
  • 【VUE】封装一个追随鼠标的漂浮组件框架
  • mapstruct与lombok结合使用
  • 【SpringBoot】Web开发之URL映射
  • 对递归的一些理解。力扣206题:翻转链表
  • Kafka面试三道题
  • C/C++编程-算法学习-数字滤波器
  • maven介绍 搭建Nexus3(maven私服搭建)
  • 电商项目之如何判断线程池是否执行完所有任务
  • 【前端 15】Vue生命周期
  • PCIe总线-Linux内核PCIe软件框架分析(十一)
  • 视觉SLAM第二讲
  • mysql1055报错解决方法
  • Java的@DateTimeFormat注解与@JsonFormat注解的使用对比
  • 德国云手机:企业移动办公解决方案
  • 【React】useState:状态管理的基石