当前位置: 首页 > news >正文

liunx环境变量学习总结

环境变量

在操作系统中,环境变量是一种特殊的变量,它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量,特别是对重要环境变量PATH的管理和定制,以及与环境变量相关的函数使用。

自定义环境变量

要创建一个自定义环境变量,您可以在终端中输入以下格式的命令:

key=value

然而,以这种方式设置的环境变量仅在当前终端会话中有效,且不会被子进程继承。若希望环境变量能在当前终端及其所有子进程中生效,并能在环境变量列表中查看到,应使用 export 命令:

export key=value

 删除环境变量

要删除已存在的环境变量,可使用 unset 命令:

unset key

执行此命令后,指定的环境变量 key 将从当前终端会话及其子进程中移除 

path环境变量

PATH 是一个极为重要的环境变量,它定义了系统在执行命令时查找可执行文件的目录列表。其典型格式如下:

PATH=/usr/local/cuda/bin:/home/zlzg01/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

当在 Bash 终端下输入一个命令(如 cdlspwd 等),系统会按照 PATH 中列出的路径顺序进行搜索,一旦在某个路径下找到对应命令的可执行文件,便会立即执行。若遍历完所有路径仍未找到,则会返回“命令未找到”(command not found)的错误。

修改 PATH 变量 

若需临时向当前终端的 PATH 添加一个路径,可使用以下命令:

PATH=$PATH:/home/test/demo

这将把 /home/test/demo 添加到现有 PATH 的末尾,但此更改仅限于当前终端会话,关闭终端后设置即失效。

若要在所有新的 Bash 会话中持久地添加路径,需要编辑用户主目录下的 ~/.bashrc 文件(对于其他 shell,可能是 ~/.zshrc~/.bash_profile 等)。打开该文件,添加如下行并保存:

export PATH=$PATH:/home/test/demo

每当启动一个新的 Bash 进程时,系统会自动执行 ~/.bashrc 中的指令,确保新添加的路径始终包含在 PATH 中 

与环境变量相关的函数

以下是与环境变量操作相关的常用函数:

  • getenv(): 用于获取指定环境变量的值。例如,在 C 语言程序中,可以使用 char *value = getenv("key"); 获取 key 环境变量的值。

  • putenv(): 修改或添加环境变量。在 C 语言中,调用 putenv("key=value"); 即可设置一个环境变量。请注意,putenv() 不接受空值,若要删除变量,请使用 unsetenv()

  • setenv(): 类似于 putenv(), 但在某些实现中提供了更多功能,如允许指定环境变量值是否可以为空。使用示例:setenv("key", "value", 1); 第三个参数表示是否允许重写已存在同名变量的值。

  • unsetenv(): 删除指定环境变量。例如,在 C 程序中使用 unsetenv("key"); 来移除 key 环境变量。

  • clearenv(): 清除当前进程的所有环境变量。这是一个全局操作,慎用。在 C 语言中,调用 clearenv(); 即可。

#include<stdio.h>
#include<stdlib.h>void printEnv(){extern char** environ;for (char** pp=environ;*pp;pp++){printf("%s\n",*pp);}}
int main(){printf("%s\n",getenv("PATH"));putenv("test=demo");setenv(const char *key,const char *value,int overwrite);//作用同putenv,单overwrite值为0时,不改变原有值,反之修改原有值printEnv();return 0;
}

相关文章:

liunx环境变量学习总结

环境变量 在操作系统中&#xff0c;环境变量是一种特殊的变量&#xff0c;它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量&#xff0c;特别是对重要环境变量PATH的管理和定制&#xff0c;以及与环境变量相关的函数使用。 自定义环境变…...

对于Redis,如何根据业务需求配置是否允许远程访问?

1、centos8 Redis安装的配置文件目录在哪里&#xff1f; 在 CentOS 8 中&#xff0c;默认情况下 Redis 的配置文件 redis.conf 通常位于 /etc/ 目录下。确切的完整路径是 /etc/redis.conf。 2、redis如何设置允许远程登录 修改redis.conf文件 # 继承默认注释掉的bind配置 # …...

深入分析Linux上下文与上下文切换

Linux 进程运行空间与特权等级 在 Linux 操作系统中&#xff0c;进程的运行空间被划分为内核空间和用户空间&#xff0c;这种划分是为了保护系统的稳定性和安全性。这两个空间对应着 CPU 的特权等级&#xff0c;分别为&#xff1a; Ring 0&#xff08;内核态&#xff09;Ring…...

Docker快速上手及常用命令速查

Docker快速上手 安装 在ubuntu上安装docker: sudo apt-get install docker docker -v #查看版本在centos7上安装docker&#xff1a;(docker在YUM源的Extras仓库中) yum install docker systemctl start dockerdocker常用命令速查 #查看docker信息 docker info #查看本地镜…...

学习笔记:解决拖延

1 解决拖延、减轻压力的关键心态和方法 1.1 要点梳理 拖延是因为自己一直在逃避&#xff0c;重点是要有效突破逃避圈&#xff0c;进入学习圈&#xff0c;扩展成长圈。 毒蛇曲线&#xff08;见思维导图&#xff09;中越是临近截止期限&#xff0c;拖延的焦虑越上升&#xff0…...

第一个Swift程序

要创建第一个Swift项目,请按照以下步骤操作: 打开Xcode。如果您没有安装Xcode,可以在App Store中下载并安装它。在Xcode的欢迎界面上,选择“Create a new Xcode project”(创建新Xcode项目)。在模板选择界面上,选择“App”(应用程序)。在应用模板选择界面上,选择“Si…...

Anthropic Claude 3 加入亚马逊云科技 AI“全家桶”

编辑 | 宋慧 出品 | CSDN AIGC 每天都有新动态发生。最新的消息是亚马逊在 3 月底完成了对 Anthropic 的 40 亿美元投资&#xff08;也是亚马逊 30 年来最大一笔外部投资&#xff09;&#xff0c;以及 GPT-4 最强对手的 Anthropic Claude 3 已经在亚马逊云科技 Amazon Bedrock…...

学习基于pytorch的VGG图像分类 day3

注&#xff1a;本系列博客在于汇总CSDN的精华帖&#xff0c;类似自用笔记&#xff0c;不做学习交流&#xff0c;方便以后的复习回顾&#xff0c;博文中的引用都注明出处&#xff0c;并点赞收藏原博主. 目录 VGG模型训练 1.导入必要的库 2.主函数部分 2.1使用cpu或gpu 2.2对数据…...

Spring Boot统一功能处理之拦截器

本篇主要介绍Spring Boot的统一功能处理中的拦截器。 目录 一、拦截器的基本使用 二、拦截器实操 三、浅尝源码 初始化DispatcherServerlet 处理请求&#xff08;doDispatch) 四、适配器模式 一、拦截器的基本使用 在一般的学校或者社区门口&#xff0c;通常会安排几个…...

stm32之基本定时器的使用

在上文我们使用到了HAL库的自带的延时函数&#xff0c;HAL_Delay&#xff08;&#xff09;&#xff1b;我们来看一下函数的原型 __weak void HAL_Delay(uint32_t Delay) {uint32_t tickstart HAL_GetTick();uint32_t wait Delay;/* Add a freq to guarantee minimum wait */…...

单片机为什么还在用C语言编程?

单片机产品的成本是非常敏感的。因此对于单片机开发来说&#xff0c;最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说&#xff0c;实现相同的产品功能&#xff0c;所需要的ROM和RAM越小越好&#xff0c;在开始前我有一些资料&#xff0c;是我根据网友给的问…...

IO流的基础详解

文件【1】File类&#xff1a; 封装文件/目录的各种信息&#xff0c;对目录/文件进行操作&#xff0c;但是我们不可以获取到文件/目录中的内容。 【2】引入&#xff1a;IO流&#xff1a; I/O &#xff1a; Input/Output的缩写&#xff0c;用于处理设备之间的数据的传输。 【3】…...

实战攻防 | 记一次项目上的任意文件下载

1、开局 开局一个弱口令&#xff0c;正常来讲我们一般是弱口令或者sql&#xff0c;或者未授权 那么这次运气比较好&#xff0c;直接弱口令进去了 直接访问看看有没有功能点&#xff0c;正常做测试我们一定要先找功能点 发现一个文件上传点&#xff0c;不过老规矩&#xff0c;还…...

熔断之神:探寻Hystrix的秘密与实践指南

引言&#xff1a; 在微服务架构中&#xff0c;服务之间的依赖复杂且难以控制&#xff0c;容灾机制成为确保系统稳定性的重要手段。Hystrix作为Netflix开源的断路器实现&#xff0c;提供了一系列强健的容错功能。 Hystrix的核心概念与作用&#xff1a; Hystrix是一个由Netflix开…...

Web功能测试测试点总结!

web测试就是基于BS架构的软件产品的测试&#xff0c;通俗点来说就是web网站的测试。 一 、界面检查 当我们进入一个页面时&#xff0c;首先应该检查title&#xff0c;页面排版(即页面的展示)&#xff0c;而不是马上进入字段校验页面面包屑导航是否正确当前位置是否可见 您的位…...

关于vue3的简单学习

Vue 3 简介 Vue 3 是一个流行的开源Java框架&#xff0c;用于构建用户界面和单页面应用。它带来了许多新特性和改进&#xff0c;包括更好的性能、更小的打包大小、更好的Type支持、全新的组合式 API&#xff0c;以及一些新的内置组件。 一. Vue 3 的新特性 Vue 3引入了许多新…...

windows server 2019 -DNS服务器搭建

前面是有关DNS的相关理论知识&#xff0c;懂了的可以直接跳到第五点。 说明一下&#xff1a;作为服务器ip最好固定下来&#xff0c;以DNS服务器为例子&#xff0c;如果客户机的填写DNS信息的之后&#xff0c;服务器的ip如果变动了的话&#xff0c;客户机都得跟着改&#xff0c…...

使用 XCTest 进行 iOS UI 自动化测试

使用 XCTest 进行 iOS UI 自动化测试是一种有效的方法&#xff0c;可以帮助你验证应用界面的行为和功能。以下是使用 XCTest 进行 iOS UI 自动化测试的基本步骤&#xff1a; 设置项目: 确保你的 Xcode 项目已经包含了 XCTest 测试目标。在测试目标中创建一个新的测试类&#xf…...

【Python】FANUC机器人OPC UA通信并记录数据

目录 引言机器人仿真环境准备代码实现1. 导入库2. 设置参数3. 日志配置4. OPC UA通信5. 备份旧CSV文件6. 主函数 总结 引言 OPC UA&#xff08;Open Platform Communications Unified Architecture&#xff09;是一种跨平台的、开放的数据交换标准&#xff0c;常用于工业自动化…...

Linux 中断处理

一、基本概念 1、中断及中断上下文 中断是一种由硬件设备产生的信号&#xff0c;不同设备产生的中断通过中断号来区分。CPU在接收到中断信号后&#xff0c;根据中断号执行对应的中断处理程序&#xff08;Interrupt Service Routine&#xff09; 内核对异常和中断的处理类似&a…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...