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;
}

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

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

相关文章

【复现】用友NC-Cloud文件上传漏洞_70

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 用友NC Cloud大型企业数字化平台&#xff0c;深度应用新一代数字智能技术&#xff0c;完全基于云原生架构&#xff0c;打造开放、…

MySQL进阶之(七)EXPLAIN 详解

七、EXPLAIN 详解 7.1 查询性能那些事7.1.1 查看系统性能参数7.1.2 统计 SQL 的查询成本7.1.3 定位执行慢的 SQL&#xff1a;慢查询日志01、开启慢查询日志参数02、关闭慢查询日志03、删除慢查询日志 7.1.4 查看 SQL 执行成本&#xff1a;SHOW PROFILE 7.2 EXPLAIN 语句输出中各…

pyqt5 QScrollArea组件

本示例中&#xff0c;演示了QScrollArea的使用&#xff0c;以及QScrollBar的样式设定&#xff0c;在代码中使用setStyleSheet设置样式&#xff0c;记得要优先设置scrollArea&#xff0c;再设置窗口的样式&#xff0c;不然QScrollBar的样式会不起作用&#xff0c;使用QSS设置没有…

SGD随机梯度下降

一、补充概念&#xff1a; 目标函数&#xff08;Objective Function&#xff09;&#xff1a;这个术语通常指的是整个优化问题中需要最小化&#xff08;或最大化&#xff09;的函数。在机器学习和优化中&#xff0c;目标函数可以包括损失函数以及正则化项等。目标函数的最优化过…

Python程序设计 列表

教学案例八 列表 1. 计算并显示斐波那契数列 输入n,计算并显示斐波那契数列前n项.一行打印5项&#xff0c;每项显示宽度为6 什么是斐波那契数列 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff…

基于SSM+Jsp+Mysql的农产品供销服务系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

windows系统安装mysql5.7

1、下载 下载路径&#xff1a;https://downloads.mysql.com/archives/community/ 2、创建配置文件my.ini 下载压缩包解压到安装目录&#xff08;本机解压后在D:\mysql-5.7.44-winx64&#xff09; 在bin的同级目录下创建my.ini文件 my.ini文件 [mysql] # 设置mysql客户端默认字符…

接口自动化测试(python+pytest+requests)

一、选取自动化测试用例 优先级高:先实现业务流程用例、后实现单接口用例功能较稳定的接口优先开展测试用例脚本的实现二、搭建自动化测试环境 核心技术:编程语言:python;测试框架:pytest;接口请求:requests安装/验证requests:命令行终端分别输入 pip install requests / p…

6.1Python之字典的初识

【1】字典的创建与价值 字典&#xff08;Dictionary&#xff09;是一种在Python中用于存储和组织数据的数据结构。元素由键和对应的值组成。其中&#xff0c;键&#xff08;Key&#xff09;必须是唯一的&#xff0c;而值&#xff08;Value&#xff09;则可以是任意类型的数据。…

国内如何实现GPT升级付款

本来想找国外的朋友代付的&#xff0c;但是他告诉我他的信用卡已经被绑定了他也升级了所以只能自己想办法了。就在一位博主下边发现了这个方法真的可以。只是需要与支付宝验证信息。刚开始不敢付款害怕被骗哈哈&#xff0c;我反诈骗意识绝对杠杠的 该方法就是我们办理一张虚拟…

3D可视化技术亮相高铁站,引领智慧出行新潮流

在科技飞速发展的今天&#xff0c;我们的生活正经历着前所未有的变革。高铁站作为现代交通的重要枢纽&#xff0c;也在不断地创新和进步。 3D可视化技术通过三维立体的方式&#xff0c;将高铁站内部和外部的结构、设施、流线等以更加直观、生动的形式呈现出来。乘客们只需通过手…

2、java语法之循环、数组与方法(找工作版)

写在前面&#xff1a;整个系列文章是自己学习慕课相关视频&#xff0c;进行的一个总结。文章只是为了记录学习课程的整个过程&#xff0c;方便以后查漏补缺&#xff0c;找到对应章节。 文章目录 一、Java循环结构1、while循环2、do-while循环3、for循环4、嵌套循环5、break语句…

我认识的建站公司老板都躺平了,每年维护费都大几十万。

这些老板们过的悠哉游哉&#xff0c;大富大贵没有&#xff0c;达到中产&#xff0c;活得舒服&#xff0c;没毛病。 企业官网每年需要交维护费主要是因为以下几个原因&#xff1a; 网站服务器和域名费用&#xff1a;企业官网需要通过服务器进行托管和访问&#xff0c;同时需要…

三种常见webshell工具的流量特征分析

又来跟师傅们分享小技巧了&#xff0c;这次简单介绍一下三种常见的webshell流量分析&#xff0c;希望能对参加HW蓝队的师傅们有所帮助。 什么是webshell webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境&#xff0c;主要用于网站管理、服务器管理、…

蓝桥杯第十二届c++大学B组详解

目录 1.空间 2.直线 3.路径 4.卡片 5.货物摆放 6.时间显示 7.砝码称重 8.杨辉三角 9.双向排序 10.括号序列 1.空间 题目解析&#xff1a;1Byte 8bit 1kb 1024B 1MB 1024kb; 先将256MB变成Byte 256 * 1024 * 1024; 再将32位 变成Byte就是 32 / 8 4&#xff1b;…

4.进程相关 2

8.内存映射 8.1 内存映射相关定义 创建一个文件&#xff0c;将保存在磁盘中的文件映射到内存中&#xff0c;后期两个进程之间对内存中的数据进行操作&#xff0c;大大减少了访问磁盘的时间&#xff0c;也是一种最快的 IPC &#xff0c;因为进程之间可以直接对内存进行存取 8.…

第十二届蓝桥杯省赛真题(C/C++大学B组)

目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…

JVM性能监控与调优——命令行工具

文章目录 1、概述2、jps:查看正在运行的Java进程3、jstat&#xff1a;查看JVM统计信息4、jinfo&#xff1a;实时查看和修改JVM配置参数5、jmap&#xff1a;导出内存映像文件和内存使用情况6、jhat:JDK自带堆分析工具7、jstack&#xff1a;打印JVM中线程快照8、jcmd&#xff1a;…

第一个Swift程序

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

【静态分析】静态分析笔记01 - Introduction

参考&#xff1a; BV1zE411s77Z [南京大学]-[软件分析]课程学习笔记(一)-introduction_南京大学软件分析笔记-CSDN博客 ------------------------------------------------------------------------------------------------------ 1. program language and static analysis…
最新文章