Linux 环境变量

文章目录

  • 环境变量概念
  • 查看环境变量
  • 设置环境变量
  • 代码获取环境变量
  • 补充说明

环境变量概念

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

个人理解:Linux下一切皆文件,在Linux中所用的指令其实都是一个个可执行文件,例如ls
指令,他的路径为 /bin/ls , 用户直接输入ls即可运行该文件, 那么为什么用户自己用代码编写生产的可执行文件,要用路径/文件名的格式才能执行,而像 ls 这样的指令不需要呢? 因为系统的环境变量,为 ls提供了运行环境的参数,或者说帮助该指令查到了其可执行文件所在的位置 。

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

在这里插入图片描述

! : 环境变是一个 KET=VALUE 形式的键值对 ;

查看环境变量

指令:

  1. echo: 显示某个环境变量值($代表后面的字符串是个变量名)
echo $KEY 
  1. env: 显示所有环境变量
  2. set: 显示本地定义的shell变量和环境变量

设置环境变量

  1. export: 设置一个新的环境变量
export KET=VALUE 
  1. unset: 清除环境变量
  2. putenv (在C代码中执行的函数)
`int putenv(char *string);`
#include <stdio.h>
#include <stdlib.h>int main() {if (putenv("MYVAR=Hello") == 0) // 环境变是一个 `KET=VALUE` 形式的键值对{printf("Environment variable set successfully\n");} else {printf("Failed to set environment variable\n");}return 0;
}
  1. 通过配置文件设置永久生效的环境变量

前面的环境变量设置方法,在重启xshell以后会失效,将环境变量添加到~/.bashrc~/.bash_profile文件中,这样每次登录时都会加载这些环境变量。因为除非自己手动删除否则永久生效,所以要谨慎配置。

进入配置文件

vi ~/.bashrc

在文件末尾添加:

export 变量名=变量值

例如:

export MY_VAR=hello

保存并退出文件,然后执行以下命令使其生效:

source ~/.bashrc

这样,每次登录时都会自动加载这些环境变量。

代码获取环境变量

  1. 通过main函数参数获取
#include <stdio.h>int main(int argc, char *argv[], char *env[]) // env即环境表,环境表在补充说明部分有;
{int i = 0;for(; env[i]; i++){printf("%s\n", env[i]);}return 0;
}`
  1. 通过getenv函数获取
int putenv(char *string);

示例:

#include <stdio.h>
#include <stdlib.h>int main() {char *path = getenv("PATH");// PATH 为输入的KEY,返回值为VALUEif (path != NULL) {printf("PATH: %s\n", path);} else {printf("PATH not found\n");}return 0;
}
  1. 通过第三方变量environ获取

在Linux中,environ是一个指向环境变量的指针数组。它是一个全局变量,存储了当前进程的环境变量信息(环境表,见补充说明部分)。环境变量是一些在操作系统中设置的键值对,用于存储各种配置信息和运行时参数。例如,PATH环境变量用于指定可执行程序的搜索路径。environ指针数组中的每个元素都指向一个以 key=value 格式表示的环境变量字符串。数组的最后一个元素是一个空指针,用于表示数组的结束。通过遍历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;
}`

i

补充说明

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

在这里插入图片描述

  1. 在终端执行export MYENV="hello world“ 和 直接执行 MYENV="hello world“ 的区别

export命令用于将普通变量设置为环境变量,环境变量具有全局属性,可以在当前会话中的所有子进程中访问到。而直接执行变量赋值语句设置普通变量,如MYENV=“hello world”,则只在当前shell进程中有效,不会被子进程继承。

  1. 由于环境变量的全局属性,父进程的环境变量可以被子进程继承 。

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

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

相关文章

在机器学习或者深度学习中是否可以直接分为训练集和测试集而不需要验证集?我的答案如下:

文章目录 一、训练集是什么&#xff1f;二、验证集是什么&#xff1f;三、测试集是什么&#xff1f;四、是否可以直接分为训练集和测试集而不需要验证集&#xff1f;总结 在机器学习和深度学习项目中&#xff0c;通常会将数据集划分为三个部分&#xff1a;训练集&#xff0c;验…

UVM实现component之间transaction级别的通信

my_model是从i_agt中得到my_transaction&#xff0c;并把 my_transaction传递给my_scoreboard。在UVM中&#xff0c;通常使用TLM&#xff08;Transaction Level Modeling&#xff09;实现component之间transaction级别 的通信。 在UVM的transaction级别的通信 中&#xff0c;数…

在Word中移动页面主要靠导航窗格,有了它,移动页面就事半功倍

本文包括有关在Microsoft Word 2019、2016和Office 365中使用导航窗格移动页面以及复制和粘贴页面的说明。 如何设置导航窗格以重新排列页面 Microsoft Word并不将文档视为单独页面的集合,而是将其视为一个长页面。正因为如此,重新排列Word文档可能会很复杂。在Word中移动页…

【精选】ATKCK红队评估实战靶场二 (超详细过程思路)

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【ATK&CK红队评估实战靶场】 【VulnHub靶场复现】【面试分析】 &#x1f…

智能优化算法应用:基于堆优化算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于堆优化算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于堆优化算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.堆优化算法4.实验参数设定5.算法结果6.参考文献7.…

Verilog if语句阻断z状态传播

一、测试代码 设置两组输入输出&#xff0c;对比使用assign赋值语句与always if语句。 if_assign_test.v timescale 1ns / 1ps // // Engineer: wkk // Module Name: if_assign_test // module if_assign_test(input if_a_in,input if_b_in,input if_c_in,input if_d_in…

在线网页视频提取工具哪个好用?建议收藏!

随着短视频的崛起&#xff0c;很多人都喜欢将视频下载到手机中慢慢观看&#xff0c;这样可以避免在线播放的卡顿问题&#xff0c;但是会遇到一个问题就是在线网页视频提取工具哪个好用&#xff0c;有的可以提取但是画质太差模糊&#xff0c;有的自带水印飞来飞去。今天小编给大…

同旺科技 USB TO SPI / I2C --- 调试W5500_读写网关地址

所需设备&#xff1a; 内附链接 1、USB转SPI_I2C适配器(专业版); 首先&#xff0c;连接W5500模块与同旺科技USB TO SPI / I2C适配器&#xff0c;如下图&#xff1a; 这里的网关地址设置为192.168.1.1 先将网关地址写入寄存器&#xff0c;然后再读取出来&#xff1a;

关于神舟-战神TA5NS系统重装问题

加装固态卡在log处无法开机问题 下面是我的步骤 1.按f7选择pe安装系统&#xff0c;然后发现卡在战神log处不转动 2.下载驱动 TA5NS驱动地址 下载RAID驱动&#xff08;如果没有私信我&#xff0c;我网盘里有&#xff09;&#xff0c;拷到u盘中&#xff0c;然后进入pe系统里面…

Educational Codeforces Round 159 (Rated for Div. 2) 之 A - E 题

目录 [A. Binary Imbalance](https://codeforces.com/contest/1902/problem/A)DescriptionSolutionCode [B. Getting Points](https://codeforces.com/contest/1902/problem/B)DescriptionSolutionCode [C. Insert and Equalize](https://codeforces.com/contest/1902/problem/…

分享126个图片JS特效,总有一款适合您

分享126个图片JS特效&#xff0c;总有一款适合您 126个图片JS特效下载链接&#xff1a;https://pan.baidu.com/s/1sOKHo4RciQXwQX9vhLIm3g?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整…

【Maven】更新依赖索引

有时候给idea配置完maven仓库信息后&#xff0c;在idea中依然搜索不到仓库中的jar包。这是因为仓库中的jar包索引尚未更新到idea中。这个时候我们就需要更新idea中maven的索引了&#xff0c;具体做法如下&#xff1a; 打开设置----搜索maven----Repositories----选中本地仓库-…

Javafx实现浏览器

浏览器是一种计算机程序&#xff0c;主要用于显示互联网上的网页。通过浏览器&#xff0c;用户可以访问各种网站、搜索引擎、在线应用程序、社交媒体等。常见的浏览器包括Google Chrome、Mozilla Firefox、Safari、Microsoft Edge、Opera等。浏览器的功能不仅限于浏览网页&…

shell编程

1、开发内存监测脚本 功能描述 监测linux剩余可用的内存&#xff0c;当可用内存小于100M时&#xff0c;就发邮件给我&#xff1b;并且将该脚本加入crontab&#xff0c;每3分钟检查一次内存知识点 获取当前内存的命令&#xff1a;free -m # 以兆的形式显示代码 #! /bin/bashf…

15、pytest的fixture调用fixture

官方实例 # content of test_append.py import pytest# Arrange pytest.fixture def first_entry():return "a"# Arrange pytest.fixture def order(first_entry):return [first_entry]def test_string(order):# Actorder.append("b")# Assertassert orde…

Python中检查字符串是否仅包含字母的多种方法:深入探究

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 随着Python在数据处理和字符串操作方面的广泛应用&#xff0c;经常需要对字符串进行验证&#xff0c;确认其是否仅包含字母。本文将探讨Python中的多种方法来检查字符串是否只由字母组成&#xff0c;以及它们的应…

自助POS收银机-亿发互联网收银解决方案助力零售业迎接数字经济挑战

零售业作为中国经济的主动脉&#xff0c;扮演着至关重要的角色。最新发布的《中国线下零售小店数字化转型报告》揭示了当前线下零售小店所面临的多重痛点&#xff0c;经营方式传统、滞后的内部管理和营销模式&#xff0c;以及缺乏消费数据等问题&#xff0c;这些痛点都指明&…

项目经理是干出来的,不是教出来的

大家好&#xff0c;我是老原。 有不少新手项目经理&#xff0c;在通过了PMP认证考试&#xff0c;拿到PMP证书后&#xff0c;对之前无序的项目管理状态感觉有了一丝通透的感觉&#xff0c;对接受新项目更是信心满满。 然后就有不少没有项目管理经验&#xff0c;且刚刚考取PMP证…

玩转大数据7:数据湖与数据仓库的比较与选择

1. 引言 在当今数字化的世界中&#xff0c;数据被视为一种宝贵的资源&#xff0c;而数据湖和数据仓库则是两种重要的数据处理工具。本文将详细介绍这两种工具的概念、作用以及它们之间的区别和联系。 1.1. 数据湖的概念和作用 数据湖是一个集中式存储和处理大量数据的平台&a…

Vue Computed

小满&#xff0c;我的神&#xff01; 视频链接 // 只读 const plusOne computed(() > count.value 1) // 可读可写 const plusOne computed({get: () > count.value 1,set: (val) > {count.value val - 1} }, { // 用于调试onTrack(e) {debugger},onTrigger(e) …