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,返回值为VALUE
    if (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. 由于环境变量的全局属性,父进程的环境变量可以被子进程继承 。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式(4):连续次数的匹配

正则表达式&#xff08;4&#xff09;&#xff1a;连续次数的匹配 小结 本博文转载自 在本博客中&#xff0c;”正则表达式”为一系列文章&#xff0c;如果你想要从头学习怎样在Linux中使用正则&#xff0c;可以参考此系列文章&#xff0c;直达链接如下&#xff1a; 在Linux中…

uniapp使用vue-i18n国际化多国语言

前言&#xff1a;uniapp是自带有i18n这个插件的&#xff0c;如果没有npm安装即可 此插件需要自己去给每一个需要国际化的字符去手动配置key&#xff0c;所以如果是已经完成的项目可能工作量就稍微有点大了 第一步&#xff1a; 语言命名是有规范的不能乱取名&#xff0c;具体可…

TCP首部格式_基本知识

TCP首部格式 表格索引: 源端口目的端口 序号 确认号 数据偏移保留 ACK等 窗口检验和紧急指针 TCP报文段首部格式图 源端口与目的端口: 各占16位 序号:占32比特&#xff0c;取值范围0~232-1。当序号增加到最后一个时&#xff0c;下一个序号又回到0。用来指出本TCP报文段数据载…

Linux下如何运行.sh文件

运行环境为ubuntu20.04 如在/home/zoe/map运行.sh文件&#xff1a; 进入到/home/zoe文件夹下&#xff1a; cd /home/zoe/map 第一种运行方式&#xff1a; sh play.sh 结果&#xff1a; 第二种方式&#xff1a; 使用chmod修改文件的执行权限&#xff0c;然后运行 chmod x …

图书馆智能密集书架怎么用的

图书馆智能密集书架是一种高密度存储书籍的设备&#xff0c;通过机器控制和操作&#xff0c;实现了对书籍的高效存储和检索。使用专久智能智能密集书架的方法如下&#xff1a; 1.先进行授权认证&#xff0c;确认身份和权限&#xff0c;进行操作前要确保权限正确&#xff0c;以免…

HTTP请求

前言 HTTP是应用层的一个协议。实际我们访问一个网页&#xff0c;都会像该网页的服务器发送HTTP请求&#xff0c;服务器解析HTTP请求&#xff0c;返回HTTP响应。如此就是我们获取资源或者上传资源的原理 HTTP请求报头格式 图片来自网络 HTTP请求报头总体有四部分&#xff1a;…

Gmsh <二>:Mesh generation

上一节主要涉及Gmsh的使用入门和几何模型构建简介中&#xff0c;我们讲了Gmsh构建几何的一些基本知识&#xff0c;下面主要侧重于Gmsh在网格生成方面的操作。 网格生成的不同算法 在Gmsh中&#xff0c;当几何模型构建完成后&#xff0c;我们可以使用函数gmsh.model.mesh.gene…

unity 2d入门飞翔小鸟按钮点击功能且场景切换(二)

1、素材包获取 链接: https://pan.baidu.com/s/1KgCtQ_7wt2mlbGbIaMVvmw 提取码: xxh8 2、将素材全部拉进去 3、创建新的场景 并且将场景添加到build settings里面 4、脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityE…

Python的海龟 turtle 库使用详细介绍(画任意多边形,全网最详细)

学Turtle库&#xff0c;其实就是学数学&#xff0c;而且还能提高对数学和学习的兴趣。Turtle库还能够帮助孩子更好地理解几何学和数学概念&#xff0c;比如角度、比例、几何图形的性质等等&#xff0c;是Python中一个很有趣的库。 前言 Turtle库是Python中一个很有趣的库&…

装修流程篇

装修流程 https://www.xiaohongshu.com/explore/627ba70d00000000210357b3 https://www.xiaohongshu.com/explore/63b6bc0c000000002203776f 半包装修流程 https://www.xiaohongshu.com/explore/64e5ea3b0000000003021711 户型图 效果 https://www.xiaohongshu.com/ex…

5G承载网和大客户承载的演进

文章目录 移动4/5G承载网联通和电信4/5G承载网M-OTN&#xff08;Metro-optimized OTN&#xff09;&#xff0c;城域型光传送网PeOTN&#xff08;packet enhanced optical transport network&#xff09;&#xff0c;分组增强型OTN板卡增强型PeOTN集中交叉型PeOTN VC-OTN&#x…

CoreDNS实战(六)-编译安装unbound插件

本文主要介绍coredns的unbound插件进行编译安装的过程及常用的配置方法。 coredns官方的unbound文档&#xff1a;unbound unbound插件的github地址&#xff1a;https://github.com/coredns/unbound 注&#xff1a;unbound插件虽然是coredns中的External Plugins&#xff0c;但…

如何使用llm 制作多模态

首先将任何非字符的序列信息使用特殊n个token 编码。 具体编码方法以图像为例子说明&#xff1a; 将固定尺寸图像如256256 的图像分割为1616 的子图像块。 将已知的所有图像数据都分割后进行str将其看做是一个长的字符&#xff0c;而后去重后方式一个词表。 使用特殊1024 个tok…

GNN Maximum Flow Problem (From Shusen Wang)

Maximum Flow Problem ShusenWang 图数据结构和算法课程笔记 Slides Maximum Flow Problem Description Naive Algorithm Residual Capacity - FlowLeft: Original GraphRight: Residual Graph - Bottleneck capacity 2- Iteration 2:- Find an augmenting path: s -&g…

IntelRealSense深度相机D455在ROS1运行中的消息内容

IntelRealSense深度相机D455在ROS1运行中的消息内容 通过下面命令所有相关信息通过ros topic的方式发布出去rosnode查看rqt_graph查看rostopic查看通过下面命令直接查看RVIZ中点云信息rosnode查看rqt_graph查看rostopic查看 Physical Port:&#xff1a; /sys/devices/pci0000:0…

线性回归既是一种数据挖掘与建模算法,也是统计学领域、计量经济学领域的常用学术建模方法,有何不同?

一.线性回归的基本形式 线性回归既是一种数据挖掘与建模算法&#xff0c;也是统计学领域、计量经济学领域的常用学术建模方法。在数据挖掘与建模领域&#xff0c;线性回归算法是一种较为基础的机器学习算法&#xff0c;其基本思想是将响应变量&#xff08;因变量、被解释变量&…

协议栈的内部结构

上层会向下层逐层委派工作。 最上面的部分是网络应用程序&#xff0c;它们会将收发数据等工作委派给下层的部分来完成。尽管不同的应用程序收发的数据内容不同&#xff0c;但收发数据的操作是共通的。 应用程序的下面是Socket库&#xff0c;其中包括解析器&#xff0c;解析器…

Java+Swing+Mysql实现超市管理系统

一、系统介绍 1.开发环境 操作系统&#xff1a;Win10 开发工具 &#xff1a;IDEA2018 JDK版本&#xff1a;jdk1.8 数据库&#xff1a;Mysql8.0 2.技术选型 JavaSwingMysql 3.功能模块 4.系统功能 1.系统登录登出 管理员可以登录、退出系统 2.商品信息管理 管理员可以对商品信息…

Windows下安装Git和Git小乌龟

目录 Git简介 Git安装 Git小乌龟简介 Git小乌龟安装 Git简介 Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地进行从很小到非常大的项目的版本管理。Git支持将本地仓库与远程仓库进行关联&#xff0c;实现多人协作开发。由于具有分布式版本控制、高效性、灵…

掌握Python Pingouin:数据统计新利器解析!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Pingouin库基于pandas、scipy和statsmodels&#xff0c;为用户提供了执行常见统计分析的功能。它支持各种统计方法和假设检验&#xff0c;例如 t-tests、ANOVA、correlation analysis 等。让我们看一些示例代码&…