基于Linux系统中的 【环境变量】 详细讲解

news2024/9/22 9:47:18

目录

一、环境变量的基本概念

二、环境变量的认识

1、常见的环境变量

2、查看环境变量的方法

3、环境变量的作用

4、和环境变量相关的命令

5、环境变量的组织方式

6、获取环境变量的方式

1)通过环境参数表获取

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

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


一、环境变量的基本概念

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

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

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

二、环境变量的认识

1、常见的环境变量

● PATH : 指定命令的搜索路径

● HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

● SHELL : 当前Shell,它的值通常是/bin/bash。

...

2、查看环境变量的方法

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

3、环境变量的作用

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

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

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

环境变量是在系统开启之后加载到配置文件中,再从配置文件加载到bash进程中的。

环境变量里面包含有许多进程运行的相关数据,我们可以通过env命令查看所有环境变量信息

里面各种环境变量对应各种数据信息,这里我主要介绍一下PATH环境变量和HOME环境变量

PATH环境变量:

在Linux中若要运行我们自己所写的执行程序是必须在命令行中添加路径才可以运行,而众所周知我们平时在Linux上所输入的各种命令本质上也是一个执行程序,都是通过执行进程来完成的,但为什么我们所写的程序需要添加路径,而系统中的各种命令不需要呢?

我们可以在Linux中输入命令:echo $PATH,查看PATH环境变量的内容

可以看到,PATH环境变量中存有好几段路径,正是这几段路径的存在,我们在命令行输入命令时,系统会自动先向这几段路径中的文件进行查找所要执行的命令,当然我们Linux中大部分命令的实现程序也都是在PATH环境变量里所包含的路径下的,所以在使用系统命令时不需要添加路径即可执行。

那么我们是否可以把自己所写程序的路径也加载到PATH环境变量当中来实现无需输入路径就执行所写的程序呢?当然可以!将我们的程序所在路径加入环境变量PATH当中,加入命令:

export PATH=$PATH:path(path指所写程序的路径)

切记不是export PATH = path,这样会直接把环境变量PATH全改成所写的路径path,那样的话系统中的各种命令如ls等就都用不了了

不过也不用担心,只要重启系统就可以回到原来的PATH环境变量当中,原因我们之前也说过了,环境变量在开机之后是从系统的配置文件中加载进来的,所以只要重启系统,就可以将PATH恢复,要想使其不被恢复,即便重启也要保持修改后的PATH数据,那么就要修改系统的配置文件。

HOME环境变量:

我们在登录Linux系统时,若是以普通身份登录那么我们一开始所处的路劲就为普通用户的家目录,若是以root身份登录,那么一开始所处路径为/root,其原因在于各自加载进来环境变量HOME不同控制这对应所处的家目录

4、和环境变量相关的命令

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

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

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

4. unset: 清除环境变量

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

5、环境变量的组织方式

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

6、获取环境变量的方式

1)通过环境参数表获取

● 命令行第三个参数

#include <stdio.h>

int main(int argc, char *argv[], char *env[])
{
    int i = 0;
    for(; env[i]; i++)
    {
        printf("%s\n", env[i]);
    }
    return 0;
}

● 通过第三方变量environ获取

#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;
}
libc 中定义的全局变量 environ 指向环境变量表 ,environ 没有包含在任何头文件中 , 所以在使用时 要用 extern 声明。

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

getenv(获取环境变量)
putenv(设置环境变量)
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("%s\n", getenv("PATH"));
    return 0;
}
常用 getenv putenv 函数来访问特定的环境变量。

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

● 环境变量通常具有全局属性,可以被子进程继承下去
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char * env = getenv("MYENV");
    if(env)
    {
        printf("%s\n", env);
    }
    return 0;
}
运行上面代码直接查看,发现没有结果,说明该环境变量根本不存在
● 导出环境变量
export MYENV="hello world"
再次运行程序,发现结果有了!说明:环境变量是可以被子进程继承下去的!因为子进程可以获取到父进程的代码和数据
本地变量:
如果只进行 MYENV “helloworld” , 不调用 export 导出,在用我们的程序查看env是看不到MYENV环境变量的,但是直接echo $MYENV是可以查出来的我们讲这种环境变量成为本地变量。

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

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

相关文章

微信小程序开发组件和API(附源代码演示)

微信小程序组件参考文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/ 微信开发者工具下载网址&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 小程序开发指南&#xff1a;https://developers.weixin.qq…

Langchain框架深度剖析:解锁大模型-RAG技术的无限潜能,引领AI应用新纪元

文章目录 前言一、Langchain 框架概述二、大模型-RAG技术原理三、应用示例1.RAG案例一&#xff08;私有文档直接读取-问答&#xff09;2.RAG案例二&#xff08;Vue上传文件结合文件内容回答问题&#xff09;3.RAG案例三&#xff08;Vue秒传文件结合文件内容回答问题&#xff09…

C语言——预处理详解(上)

目录 引言 预定义符号 define 定义常量 #define 定义宏 带有副作用的宏参数 宏替换的规则 宏和函数的对比 引言 在C语言编程中&#xff0c;预处理是编译前的关键步骤&#xff0c;它负责处理如宏定义、条件编译和文件包含等指令。今天我们来学习一下有关C语言——预处理…

洛谷 3道 函数 题目 题解 (超详细)

题目目录&#xff1a; No.1 B2137 判决素数个数 No.2 B2138 最大质因子序列 No.3 B2140 二进制分类 OK&#xff0c;开始正文&#xff01; 第一题&#xff1a; B2137 判决素数个数 题目描述 求 X&#xff0c;Y 之间的素数个数&#xff08;包括 X 和 Y&#xff09;。 输入…

LB-8100A 推拉力测试机精密推拉力试验机

LB-8100A 多功能推拉力测试机广泛应于与 LED 封装测试、IC 半导体封 装测试、TO 封装测试、IGBT 功率模块封装测试、光电子元器件封装测试、汽 车领域、航天航空领域、军工产品测试、研究机构的测试及各类院校的测试 研究等应用。 多功能推拉力测试机精密推拉力试验机 *设备硬件…

地热模拟软件opengeosys-OGS安装和学习1

1.下载地址 官网&#xff1a;https://www.opengeosys.org/ 界面Gina&#xff1a;https://discourse.opengeosys.org/t/gina-version-3-24/175 https://teambeam.bgr.de/my/drive/folder/68&#xff08;注意下载压缩包&#xff0c;有些注册表需要处理&#xff09; 2.处理 下…

视频汇聚平台智能边缘分析一体机分析平台摄像头异常位移算法识别检测

智能边缘分析一体机在摄像头异常位移检测方面扮演着关键角色&#xff0c;它利用先进的图像处理技术和机器学习算法来实时监测摄像头状态&#xff0c;判断是否发生了非预期的位移。下面是智能边缘分析一体机如何检测摄像头异常位移的详细步骤&#xff1a; 1. 图像帧对比&#x…

内部排序(二路归并、基数、计数)

【内部排序&#xff08;插入、交换、选择&#xff09;】 一、二路归并排序 1. 算法思想与实现步骤 1&#xff09;算法思想&#xff1a; 二路归并排序是一种分治算法。它将待排序的序列分为两个子序列&#xff0c;分别对这两个子序列进行排序&#xff0c;然后将两个已排序的子…

安美数字酒店宽带运营系统 weather.php 任意文件读取漏洞复现

0x01 产品简介 HiBOS酒店宽带运营系统是由安美世纪(北京)科技有限公司开发的一套专为酒店设计的宽带管理系统。该系统旨在提升酒店宽带服务的运营效率和安全性&#xff0c;为酒店客人提供稳定、高速、便捷的上网体验。 0x02 漏洞概述 安美数字酒店宽带运营系统 weather.php …

【Linux】快速入门系列(四) —— Linux实用操作

Linux实用操作 前言&#xff1a;先换个阿里的源一、各类小技巧 — 快捷键&#xff08;一&#xff09;强制停止 CtrlC&#xff08;二&#xff09;退出或登出 CtrlD&#xff08;三&#xff09;历史命令搜索的三种方式&#xff08;四&#xff09;光标移动快捷键&#xff08;五&…

无人机之机架布局篇

一、“十”字型 “十”字布局适合刚接触无人机的初学者&#xff0c;是起初最先发展的布局。 优点&#xff1a;控制简单&#xff0c;首尾明确&#xff0c;俯仰和横滚运动仅需改变一对电机的转速。 缺点&#xff1a;机体前向视角易被螺旋桨遮挡&#xff0c;灵活性有所不足&…

DHCP服务(服务名dhcpd,端口UDP /67和UDP/68)

目录 前言 配置文件 DHCP服务器的配置 下载安装DHCP服务 编辑配置文件 重启服务 客户端测试 配置客户端网卡 重启网卡 前言 DHCP动态主机配置协议是一种网络协议&#xff0c;提供了动态配置IP地址的功能&#xff0c;允许服务器自动为网络上的设备分配IP地址和其他网络…

自动化测试面试常用题库

自动化面试题记录整理&#xff08;部分答案自己整理&#xff09; selenium中如何判断元素是否存在&#xff1f; 没有提供原生的方法判断元素是否存在&#xff0c;一般我们可以通过定位元素异常捕获的方式判断selenium中hidden或者是display &#xff1d; none的元素是否可以定…

8080端口被占怎么处理?

一、Windows系统 1、 按住WinR输入CMD打开命令行窗口 2、运行以下命令来查看占用端口 8080 的程序的 PID&#xff08;进程标识符&#xff09;&#xff0c;可以看到PID是12040 netstat -ano | findstr 8080 3、 运行以下命令来终止占用端口 8080 的程序&#xff1a; taskkill /p…

精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会

2024年7月17日-19日&#xff0c;风丘科技联合德国IPETRONIK亮相日本名古屋汽车工程博览会。该展会面向汽车行业不同应用场景&#xff0c;包括新的eAxle、FCEV、ADAS、测试测量系统和ECU测试等相关技术&#xff0c;是一个专为活跃在汽车行业前线的工程师和研究人员举办的汽车技术…

腾讯云 AI代码助手 | 尽享 AI时代下的程序员福利

腾讯云 AI代码助手 | 尽享 AI时代下的程序员福利 前言腾讯云AI代码助手智能补全代码信息&#xff08;代码补全&#xff09;精准修复错误代码&#xff08;代码优化&#xff09;清晰解释既有代码&#xff08;解释代码&#xff09;按需生成单元测试&#xff08;生成单元测试&#…

NoSQL 之Redis集群模式

目录 案例概述 redis工作模式 主从模式 哨兵模式 redis cluster模式 Redis集群介绍 Redis集群的优势 Redis集群的实现方法 Redis-Cluster数据分片 Redis-Cluster的主从复制模型 Redis集群部署 案例部署 安装redis 检查redis的状态 修改配置文件 重启启动redis服…

第二证券:A股三大指数震荡调整 环保板块强势拉升

环保板块迎来重磅方针 昨日&#xff0c;环保板块强势拉升&#xff0c;永清环保20%涨停&#xff0c;东江环保、启迪环境、雪迪龙等多股涨停。 音讯面上&#xff0c;中共中央、国务院近来印发《关于加快经济社会开展全面绿色转型的定见》。定见布置加快形成节省资源和保护环境的…

WordPress原创插件:Keyword-ranking-seo 1.0 关键词排名插件 有利于seo

WordPress原创插件&#xff1a;Keyword-ranking-seo 1.0 关键词排名插件 有利于seo 当用户访问网站时&#xff0c;该链接会随机选择一个关键词&#xff0c;并使用选定的搜索引擎进行搜索。 插件下载链接 https://download.csdn.net/download/huayula/89632792

备战秋招60天算法挑战,Day17

题目链接&#xff1a; https://leetcode.cn/problems/valid-anagram/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1db421J7qK/ LeetCode 242. 有效的字母异位词 题目描述 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意…