对set/env/export/declare和profile的理解

Linux Shell 变量作用域解析:export、env、set、declare 4命令核心差异 本文深入解析Linux Shell中变量作用域的核心机制,详细对比export、env、set、declare四大命令的差异与应用场景。通过内存模型图解和实战案例,揭示环境变量与Shell变量的传递原理,帮助开发者高效管理变量作用域,避免常见陷阱。掌握这些技巧可显著提升脚本调试和系统管理效率。 阅读详情
  以bash为例,当linux在启动的时候,会读取 /etc/profile文件,其实这个文件就是一个shell脚本文件,所以可以在这个文件中定义一些环境变量。 

  注意:在这个文件中定义的变量是系统变量,即:只要操作系统启动了,这些变量就存在,和用户是否登录无关。 

      当每个用户登录的时候,linux会启动一个用户登录的shell,这个shell会去读取 $HOME/.profile(或$HOME/.bashrc)文件,所以在这些文件中定义的变量,就叫用户变量,是当用户登录成功之后,才会存在的变量。
 
      注意:系统变量和用户变量都是能被登录用户直接使用的,区别仅仅是不同的用户,他们的用户变量可能不一样。 
      
      使用 set 命令不带参数,显示结果是:系统变量 + 用户变量 
      使用 env 命令不带参数,显示结果是:用户变量 
      使用 export 命令不带参数,显示结果是:被导出成为用户变量的系统变量 
      使用 declare命令不带参数,结果和 set 一样
Linux环境变量与Shell变量的本质区别及export原理 环境变量是操作系统为进程及其子进程提供的全局键值对集合,而Shell变量仅存在于当前Shell进程的内存空间中;二者的核心差异在于作用域与继承机制——只有被显式标记为‘可导出’(via export)的变量才会进入进程环境块(environ),从而被gcc、python、systemd等子进程读取;这种机制决定了PATH修改失效、conda环境不生效、Jenkins脚本找不到命令等90%的配置故障根源;理解export的声明语义、-p/-n/-f等底层选项,以及/etc/environment、/proc/ 阅读详情

相关推荐

Linux环境变量与Shell变量的本质区别及实战应用

环境变量和Shell变量是Linux进程通信与配置管理的基础机制。前者作为内核传递的只读字符串数组,具有跨进程继承性;后者仅为Shell进程内存中的局部哈希表,作用域限于当前会话。理解其差异,是解决命令找不到、程序启动失败、脚本行为异常等高频问题的关键前提。技术价值体现在可预测的环境隔离、安全的CI/CD构建、多版本工具链切换(如Conda、pyenv)以及Docker容器配置一致性上。典型应用场景包括PATH安全扩展、.env文件安全加载、GUI与终端环境同步、Java/Python运行时路径调试等。本文

weixin_33744141的博客 343

Linux环境变量的设置方式(export、profile、.bashrc)

Linux环境变量的设置方式(export、profile、.bashrc)

MrWangHao的博客 6344

Linux环境变量与Shell变量的本质区别与实战管理

环境变量和Shell变量是Linux进程通信的基础机制,前者通过environ数组由内核传递给子进程,后者仅存在于Shell进程的哈希表中;二者通过export命令建立单向复制关系,而非作用域提升。理解这一内存模型差异,是解决command not found、脚本变量失效、CI/CD环境不一致等高频问题的核心前提。其技术价值在于保障进程间安全、可控的数据继承,广泛应用于开发配置(如JAVA_HOME、PATH)、容器化部署(Docker ENV与-e参数协同)、自动化流水线(Jenkins Agent变量

weixin_34357928的博客 426

关于linux的export命令和shell变量的生命周期,环境变量(转)

export:将自定义变量设定为系统环境变量(当前shell中有效)功能说明:设置或显示环境变量。语  法:export[-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量。...

congwanghuan9749的博客 770

Linux环境变量与Shell变量:原理、读取、配置全解析

环境变量是Linux进程间传递配置信息的核心机制,本质为execve系统调用传递的char *envp[]内存块;Shell变量则仅存在于解释器进程栈中,需export才能升格为环境变量。其技术价值在于实现跨进程、跨会话、跨用户层级的运行时配置分发,支撑PATH路径解析、JAVA_HOME定位、ANDROID_HOME集成等关键场景。在终端调试、shell脚本编程、adb shell自动化、initramfs紧急恢复及国产Linux发行版(如统信UOS、麒麟)适配中,准确读取(printenv/env/de

weixin_34269583的博客 458

Linux export命令深度解析:环境变量作用域与进程继承机制

环境变量是Linux进程通信的基础机制,其可见性由export命令控制——它并非赋值操作,而是对变量‘导出标记’的设置行为。原理上,export将变量写入进程的环境块(environment block),仅影响当前shell及其fork出的子进程,无法跨进程边界自动传播。这一机制决定了PATH扩展、Docker环境注入、crontab脚本失效等高频问题的根本原因。技术价值在于精准控制执行上下文的安全边界与依赖传递,广泛应用于Shell脚本开发、DevOps流水线配置、容器化部署及安全加固场景。本文聚焦ex

weixin_34280237的博客 411

Dockerfile环境变量ENV设置与引用

FROMxxx/jdk1.8-mini:latest MAINTAINER xxx xxx@xx.com ENV profile=prod ADDapp-1.0.0-bin.zip /app-1.0.0-bin.zip RUN sh -c 'unzip /app-1.0.0-bin.zip' EXPOSE 8081 ENTRYPOINT ["/app-1.0.0/start.sh", "st...

dkgee 1万+

Linux export命令深度解析:环境变量传播机制与实战避坑指南

环境变量是Unix/Linux进程间传递配置信息的基础机制,其核心原理在于fork-exec模型下的环境块(environ)复制规则。export命令并非赋值操作,而是为shell变量打上‘可传递至子进程’的导出标记,直接影响PATH、JAVA_HOME、LD_LIBRARY_PATH等关键变量的可见性与生命周期。理解export的作用域边界、shell类型差异、持久化层级(~/.bashrc vs /etc/environment vs Docker ENV)及安全限制(ARG_MAX、敏感变量泄露),是

weixin_34332905的博客 412

Linux set、env、declare、export显示shell变量的区别

目录 Linux中 set、env、declare、export显示shell变量的区别 1. shell局部变量 2. 用户的环境变量 显示shell变量 declare 命令 export 命令 source 命令 nohup 命令 type 命令 内建命令和外部命令 设置环境变量永久有效和临时有效 其他配置文件 系统目录 问题 Linux中 set、env、declare、export...

weixin_33842328的博客 350

Linux环境变量与Shell变量核心原理与实战指南

环境变量和Shell变量是Linux进程间传递配置信息的基础机制,其本质区别在于是否通过export标记实现跨进程继承。理解PATH、HOME、JAVA_HOME等关键变量的作用域、生命周期及加载时机,是解决命令找不到、程序配置失效、CI/CD构建异常等高频问题的技术前提。在Python虚拟环境、Conda管理、StarRocks导出HDFS、Cadence Allegro GUI启动、Android Gradle构建等真实场景中,变量未导出、未持久化或未被目标进程继承,正是‘配置不生效’类故障的共性根源。

weixin_34203832的博客 437

Linux环境变量原理与实战:PATH、JAVA_HOME等核心变量详解

环境变量是Linux系统运行时的上下文基础,决定命令查找路径(PATH)、Java运行版本(JAVA_HOME)、Python模块加载(PYTHONPATH)等关键行为。其本质是进程启动时由父shell通过execve传递的键值对集合,遵循导出(export)才可被子进程继承的内存模型。技术价值在于实现环境隔离、多版本共存与可复用部署;典型应用场景包括Shell脚本调试、Docker/CI环境一致性保障、跨用户服务(如www-data)权限排查。掌握env与printenv的差异、启动链加载机制及PATH覆

cqbh2011的博客 453

set/env/export/declare和profile的理解

终于搞懂 set env export declare和profile的意义了以bash为例,当linux在启动的时候,会读取 /etc/profile文件,其实这个文件就是一个shell脚本文件,所以可以在这个文件中定义一些环境变量。 注意:在这个文件中定义的变量是系统变量,即:只要操作系统启动了,这些变量就存在,和用户是否登录无关。 当每个用户登...

weixin_34343000的博客 125

etc/profile文件为什么有的有export有的没有

export的作用是把自定义环境变量变成系统变量,所以本来就是系统变量的无需使用

yy的博客 1418

Linux环境变量与Shell变量的本质区别与实战指南

环境变量和Shell变量是Linux进程通信与配置管理的基础机制,前者通过export导出后可被子进程继承,后者仅限当前Shell会话私有。其核心原理源于fork/exec系统调用时的环境传递规则,技术价值在于实现跨进程、跨会话、跨生命周期的配置共享与隔离。典型应用场景包括Shell脚本调试、Docker容器环境注入、systemd服务配置、cron定时任务及GUI应用启动上下文继承。本文深入剖析二者作用域差异、export本质、持久化文件(.profile/.bashrc等)加载时机,并覆盖Docker

weixin_33738555的博客 488

LVGL在STM32H743IIT6上的性能优化技巧:如何提升图形界面刷新速度

本文详细介绍了在STM32H743IIT6高性能MCU上优化LVGL图形界面刷新速度的实战技巧。通过利用芯片的DMA2D硬件加速模块替代低效的软件画点,将绘制缓冲区放入SDRAM并启用双缓冲机制,以及合理配置CPU缓存与MPU,有效解决了界面卡顿问题。文章还涵盖了LVGL引擎调优、内存架构优化等关键步骤,帮助开发者充分发挥STM32H743的硬件潜力,实现流畅的图形界面体验。

vscode6remote的博客 308

自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO

下面是一个关于自适应粒子群优化(Adaptive Particle Swarm Optimization,APSO)的博客,希望可以帮助您。提示:以下是本篇文章正文内容,下面案例可供参考在上面的代码中,表示粒子的数量,表示解空间的维度,表示迭代次数,表示优化的目标函数。在__init__方法中,我们初始化了粒子群的位置和速度,并将每个粒子的位置作为其最优解,将其适应度值初始化为正无穷。我们还初始化了学习因子和惯性权重的参数。在run方法中,我们迭代了次,计算每个粒子的适应度值和最优解。

weixin_52026057的博客 9916

Linux环境变量失效的根源:fork-exec模型与export机制解析

环境变量是进程运行时的关键配置载体,其本质是进程私有的内存快照,而非全局共享配置。其生命周期、可见性与传递规则由Linux的fork-exec进程模型严格约束:父进程通过export标记的变量,仅在fork后被子进程继承,无法反向影响祖先或同级进程。这一机制决定了export不是魔法赋值,而是环境传递的开关。技术价值在于精准控制依赖注入边界,避免污染与冲突;典型应用场景包括CI/CD流水线调试、Hadoop/StarRocks等大数据组件集成、Android Framework JNI调用、Cadence

weixin_33694620的博客 390

apt-get update时出现GPG error:... bionic InRelease:The following signatures were invalid: EXPKEYS解决方案

本文主要介绍了apt-get update时出现W: GPG error: … bionic InRelease: The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering E: The repository ‘… bionic InRelease’ is not signed.解决方案,希望能对使用Ubuntu系统的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

Linux环境变量与Shell变量本质区别及实战排错

环境变量和Shell变量是Linux进程通信的基础机制,其核心差异在于作用域与导出状态的双重绑定:未export的Shell变量仅存在于当前Shell内存,而export后才写入内核分配的环境块,供子进程通过execve()继承。这种机制决定了PATH扩展、Python包加载、Docker容器变量传递、CI/CD脚本执行等关键场景的成败。掌握env(读环境块)、set(查Shell内存)、export -p(验导出状态)三命令的底层行为,能精准定位‘命令找不到’‘变量丢失’‘跨Shell失效’等高频问题。本

weixin_34034261的博客 416

Android CCodec (四) Output Buffer流程分析

Android 多媒体架构 Codec2 Output Buffer

给大佬递杯卡布奇诺的博客 3264

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1984

Shell export 命令原理与生产环境变量管理实战

环境变量是 Unix/Linux 进程通信的基础机制,其核心在于 fork() 与 execve() 系统调用间的环境块传递。export 并非简单赋值,而是为变量设置 exported 标志位,使其在子进程启动时被写入 envp 数组——这直接决定了命令能否被找到、Java 应用能否加载、GUI 工具是否可用。技术价值体现在跨进程上下文一致性、CI/CD 可复现性及容器化部署稳定性上。典型应用场景包括 Bash/Zsh 登录 Shell 初始化、Cron 静默失败排查、Docker 多阶段构建变量持久化,

daxi1047的博客 433

YOLOv11改进 | 网络结构代码逐行解析(二) | yolov11中的Mosaic增强详解

本文给大家带来的是YOLOv10中的Mosaic增强代码的详解,可能有部分人对于这一部分比较陌生,有的读者可能知道Mosaic增强但是不知道其工作原理,具体来说Mosaic增强就是指我们的数据集中的图片在输入给模型之前的一个处理过程(我们的图片并不是直接就输入给模型了,大家的训练结果中的结果检测图片大家可以看到数据集中多个图片会组合在一起这就是简单的Mosaic增强),下面我就来讲解一下其在YOLOv10中工作原理和代码定义,下面图片为一个Mosaic增强后的图片。​。

Snu77的博客 5021
上一篇: 11 认识与学习 BASH
下一篇: 12 正规表示法与文件格式化处理
otuhacker
博客等级 码龄18年 21粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值