环境变量 ─── linux第14课

news2025/3/5 6:51:31

本内容为总结:

1. 环境变量本质是配置信息, 在系统配置时起效 .

2. 环境变量具有全局性(子进程可以继承父进程的环境信息,不能继承本地变量)

3. 进程具有独立性 ,环境变量可以进程间传递信息(只读信息)

环境变量

        环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数

        如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

        环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

        环境变量: 系统提供的具有全局属性的变量 (环境变量可以被bash进程之后全部的进程继承)

常见环境变量

  • PATH : 指定命令的搜索路径
  • HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
  • SHELL : 当前Shell版本,它的值通常是/bin/bash。

查看环境变量方法

echo $name  //name: 你的环境变量的名称

测试HOME

1. 用root和普通用户,分别执行 echo $HOME , 对比差异 .

执行 cd ~; pwd ,   对应 ~ 和 HOME 的关系

HOME:当前用户的家目录

和环境变量相关的命令

1. echo: 显示某个环境变量值

2. export: 设置一个新的环境变量

3. env: 显示所有环境变量

4. unset: 清除环境变量

5. set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串

通过代码如何获取环境变量

方法一: 通过命令行第三个参数


  1 #include<stdio.h>
  2 
  3 
  4 int main(int argc, char* argv[] ,char* env[])
  5 {
  6     int i=0;
  7     for(;env[i];i++)
  8     {
  9      printf("%s\n",env[i]);
 10     }
 11     return 0;
 12 }

方法二: 通过第三方变量environ获取

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明。

#include <stdio.h>
 
int main(int argc, char *argv[])
{
  extern char **environ;
  int i = 0;
  for(; environ[i]; i++)
  {
     printf("%s\n", environ[i]);
  }
  return 0;
}

方法三: 使用getenv()

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 
  4 int main()
  5 {
  6     char* mypath =getenv("PATH");
  7     printf("%s\n" ,mypath);
  8     return 0;
  9 }

通过系统调用获取或设置环境变量

putenv , 后面讲解
getenv , 本次讲解

环境变量 VS 本地(普通)变量

bash进程可以保存变量 能读懂条件 进而可以产生脚本

bash内部有环境变量 ,本地变量 ,argv[]等,如图所示

输入a =100,用env打印全部环境变量没有找到,因为此时a是本地变量

输入export a(可以将a导入环境变量) ,再使用env打印就能看见a=100

unset a (可以将a从环境变量到出到本地变量)

环境变量通常是具有全局属性的

接着上面,重新创建新进程 ,发现依然可以在环境变量里找到a

证明环境变量具有全局性,可以被子进程继承.

本地变量不能子进程被继承

总结放在了开头

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

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

相关文章

基于APDL语言的结构优化设计

1、前言 结构设计是创造结构方案的过程&#xff0c;传统的结构设计是设计者按设计要求和设计者的实践经验&#xff0c;参考类似工程&#xff0c;通过判断创造结构方案&#xff0c;然后进行力学分析或按规范要求作安全校核&#xff0c;再修改设计。 而结构优化设计与分析则把力…

一、MySQL备份恢复

一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时&#xff0c;意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后&#xff0c;系统进行自检操作 升级数据库时&#xff0c;命令语句不严格 设备故…

【Linux第三弹】Linux基础指令 (下)

目录 &#x1f31f;1.find指令 1.1find使用实例 ​编辑 &#x1f31f;2.which指令 &#x1f31f;3.grep指令 3.1grep使用实例 &#x1f31f; 4.zip/unzip指令 4.1 zip/unzip使用实例 &#x1f31f;5.tar指令 5.1 tar使用实例 &#x1f31f;6.完结 很庆幸走在自己…

VB6网络通信软件开发,上位机开发,TCP网络通信,读写数据并处理,完整源码下载

VB6网络通信软件开发&#xff0c;上位机开发&#xff0c;TCP网络通信&#xff0c;读写数据并处理&#xff0c;完整源码下载 完整源码XZ网口四进四出主动上传版_VB源代码.rar 下载链接&#xff1a;http://xzios.cn:86/WJGL/DownLoadDetial?Id20 在自动化、物联网以及工业控制…

TMS320F28P550SJ9学习笔记1:CCS导入工程以及测试连接单片机仿真器

学习记录如何用 CCS导入工程以及测试连接单片机仿真器 以下为我的CCS 以及驱动库C2000ware 的版本 CCS版本&#xff1a; Code Composer Studio 12.8.1 C2000ware &#xff1a;C2000Ware_5_04_00_00 目录 CCS导入工程&#xff1a; 创建工程&#xff1a; 添加工程&#xff1a; C…

阿里万相,正式开源

大家好&#xff0c;我是小悟。 阿里万相正式开源啦。这就像是AI界突然开启了一扇通往宝藏的大门&#xff0c;而且还是免费向所有人敞开的那种。 你想想看&#xff0c;在这个科技飞速发展的时代&#xff0c;AI就像是拥有神奇魔法的魔法师&#xff0c;不断地给我们带来各种意想…

纯前端使用 Azure OpenAI Realtime API 打造语音助手

本文手把手教你如何通过纯前端代码实现一个实时语音对话助手&#xff0c;结合 Azure 的 Realtime API&#xff0c;展示语音交互的未来形态。项目开源地址&#xff1a;https://github.com/sangyuxiaowu/WssRealtimeAPI 1. 背景 在这个快节奏的数字时代&#xff0c;语音助手已经…

基于Windows11的RAGFlow安装方法简介

基于Windows11的RAGFlow安装方法简介 一、下载安装Docker docker 下载地址 https://www.docker.com/ Download Docker Desktop 选择Download for Winodws AMD64下载Docker Desktop Installer.exe 双点击 Docker Desktop Installer.exe 进行安装 测试Docker安装是否成功&#…

教育强国建设“三年行动计划“分析

教育部即将推出的教育强国建设"三年行动计划"中&#xff0c;职业教育板块的部署体现出鲜明的战略导向和创新思维&#xff0c;其核心是通过系统化布局和结构性改革推动职业教育高质量发展。以下从政策内涵、实施路径及潜在影响三个维度展开分析&#xff1a; 一、政策…

基于Spring Boot+vue的厨艺交流平台系统设计与实现

大家好&#xff0c;今天要和大家聊的是一款基于Spring Boot的“厨艺交流平台”系统的设计与实现。项目源码以及部署相关事宜请联系我&#xff0c;文末附上联系方式。 项目简介 基于Spring Boot的“厨艺交流平台”系统设计与实现的主要使用者分为管理员、普通用户和游客。没有…

GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析

引言&#xff1a;大语言模型计算基础设施的演进 随着大语言模型&#xff08;LLM&#xff09;的快速发展与广泛应用&#xff0c;高性能计算硬件已成为支撑LLM训练与推理的关键基础设施。目前市场上主要有三类处理器用于加速LLM相关任务&#xff1a;GPU&#xff08;图形处理单元…

强化学习-随机近似与随机梯度下降

强化学习-数学理论 强化学习-基本概念强化学习-贝尔曼公式强化学习-贝尔曼最优公式强化学习-值迭代与策略迭代强化学习-蒙特卡洛方法强化学习-随机近似于随机梯度下降 文章目录 强化学习-数学理论一、前言二、再谈mean eatimation2.1 回顾蒙特卡洛法2.2 新角度解决求均值问题2…

Linux纯命令行界面下SVN的简单使用教程

诸神缄默不语-个人技术博文与视频目录 我用的VSCode插件是这个&#xff1a; 可以在文件中用色块显示代码修改了什么地方&#xff0c;点击色块还可以显示修改内容。 文章目录 1. SVN安装2. checkout3. update1. 将文件加入版本控制 4. commit5. 查看SVN信息&#xff1a;info6.…

python 初学攻略(上)

废话写在前面&#xff0c;后面都是干货&#xff0c;这个语言教学到处都是。我这里直接给你搞定所有要用的就好了。 环境安装&#xff08;略&#xff09; 输出函数print 转义字符 二进制与字符编码 标识符和保留字 变量的定义和使用 数据类型 整数类型 浮点类型 布尔类型 字符串…

《基于大数据的相州镇新农村商务数据分析与研究》开题报告

目录 一、选题依据 1.选题背景 2.国内外研究现状与水平 &#xff08;1&#xff09;国外研究现状 &#xff08;2&#xff09;国内研究现状 3.发展趋势 4.研究意义 二、研究内容 1.学术构思与思路 &#xff08;1&#xff09;主要研究内容 (2&#xff09;拟解决的关键问…

Linux : 环境变量

目录 一 环境变量 1.基本概念 二 常见环境变量 三 查看环境变量的方法 1.env:查看系统中所有环境变量 2. echo $NAME 四 如何不带路径也能运行的自己的程序 1.将自己的程序直接添加到PATH指定的路径下 五 环境变量与本地变量 1.本地变量 2. 环境变量 六C、C中main()…

SQL-labs13-16闯关记录

http://127.0.0.1/sqli-labs/less-13/ 基于POST单引号双注入变形 1&#xff0c;依然是一个登录框&#xff0c;POST型SQL注入 2&#xff0c;挂上burpsuite&#xff0c;然后抓取请求&#xff0c;构造请求判断漏洞类型和闭合条件 admin 发生了报错&#xff0c;根据提示闭合方式是(…

2025-03-04 学习记录--C/C++-PTA 习题5-4 使用函数求素数和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>// 函数声明&#xff1a;判断一个数是…

Virtuose 6D TAO HF力反馈系统:加强力遥操作主手

Virtuose 6D TAO是一款搭载六主动自由度的力反馈设备&#xff0c;该产品自带被动式夹持器&#xff0c;工作空间大&#xff0c;可与EtherCAT接口通信&#xff0c;是轻松控制从机械臂的首选产品&#xff0c;特别适合工业遥操作、核工业遥操作等应用。 产品特点 ▪ 六主动自由度、…

使用AI后为什么思考会变得困难?

使用AI后为什么思考会变得困难&#xff1f; 我总结了四篇近期的研究论文&#xff0c;来展示AI是如何以及为什么侵蚀我们的批判性思维能力。 作者使用AI制作的图像 前言&#xff1a;作者在这篇文章中&#xff0c;借AI技术的崛起&#xff0c;揭示了一场悄然发生的思想博弈。表面…