Linux的环境变量

news2024/11/25 8:41:50

目录

什么是环境变量?

那么如何添加自己的程序到命令行上,可以直接执行?

如何查看环境变量?

如何定义环境变量?

C语言如何获取环境变量?


什么是环境变量?

在回答这个问题之前,可以先了解系统指令,首先我们在命令行上输入ls,pwd等命令时,可以马上获得执行结果,这是因为ls,pwd都是

可以执行的程序,它们就在usr/bin/目录下,查看该目录下的文件,可以看到ls等一系列命令,

 我们可以看到,这些都是可执行程序,我们在执行a.out文件时需要./a.out带上当前路径,或者用绝对路径执行程序,但是执行系统的指令时为什么不用呢?

因为系统中保存了执行指令的搜索路径,这个路径就是PATH变量。这个变量就是环境变量。

使用echo $PATH 显示环境变量PATH,PATH中可以有多个路径,:是多个路径的分隔符

那么如何添加自己的程序到命令行上,可以直接执行?

最简单的方法就是将程序所处路径添加到环境变量PATH中:

使用命令PATH=$PATH:新增路径,这里$PATH是当前的环境变量PATH,这个命令就是新增一个路径,比如

 将当前路径添加到环境变量,在任何目录下就不用./就可以直接执行可执行程序了。 

但这只是内存上的临时修改,重启shell后环境变量就还原了。因为环境变量保存在系统的配置文件中,所以可以修改配置文件让环境变量一直生效。

还有一种方法,直接将将程序拷贝到/usr/bin/等PATH中的搜索路径下即可。

如何查看环境变量?

使用指令env:可以看到环境变量

使用指令set查看环境变量和本地变量,比如:

HOME:用户的家目录

HISTSIZE:最大历史命令条数

USER:用户名

SHELL:shell所在目录

PATH:系统命令搜索路径

等等......

 

如何定义环境变量?

比如aaaa=1000,是在bash中定义本地变量,加上export就可以导出环境变量,例如:

 取消环境变量:使用命令 unset 环境变量

C语言如何获取环境变量?

主要有三种方法:

1.在main函数中传递的第三个参数就是环境变量的字符指针数组,直接获取即可

2.使用C语言提供的全局变量environ,声明一下即可:extern char **environ

3.使用库函数getenv,参数传入要获取的变量的名字字符串即可。

 代码示例:

#include<stdlib.h>
#include<stdio.h>

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

    extern char**environ;
    printf("env from extern:\n");
    for(int i=0;i<5;i++)
    {
        printf("%s\n",environ[i]);
    }

    printf("\n env from getenv:%s\n",getenv("HISTSIZE"));
    return 0;
}


输出:

 


 

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

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

相关文章

【Linux】之systemd与systemctl

文章目录一、systemd1. systemd 守护进程管理 Linux 的启动2. systemd 提供的功能:3. systemd 使用单元来管理不同类型的对象。4. 服务单元信息二、systemctl1. systemctl输出中的服务状态2. 列出servera上安装的所以服务单元3. 列出servera上所有活动和不活动的套接字单元4.1 …

存档鉴未来,新时代电子档案长期保存之道

&#xff08;一&#xff09;电子档案单套制是未来档案管理的趋势 在政府和企业端&#xff0c;办公体系的信息化&#xff0c;电子档案的单套制实施&#xff0c;极大地提高了事务办理的效率&#xff0c;同时节约了大量纸质文件的使用成本。 在政务领域&#xff0c;单套制的推行…

Day840.原子类-Java 并发编程实战

原子类 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于原子类。 一个累加器的例子&#xff0c;示例代码如下&#xff1a; 在这个例子中&#xff0c;add10K() 这个方法不是线程安全的&#xff0c;问题就出在变量 count 的可见性和 count1 的原子性上。 可见性问题…

Java7的异常处理新特性addSuppressed()方法

学习使用Java7新语法try-with-resources&#xff0c;在查看编译文件时&#xff0c;接触到addSuppressed()方法。记录一下使用方式。 先来看一段代码&#xff1a; private static void testt() {try (InputStream is CatchTest.class.getClassLoader().getResourceAsStream(&…

ThinkPHP 多应用模式初探

还是很久以前用tp3.0开发过项目&#xff0c;之后就再没使用过&#xff0c;现在tp都更新到6了&#xff0c;与之前差距很大&#xff0c;需要重新练习掌握最新的tp框架使用及特性。 目录 1.安装框架 2.安装多应用模式扩展think-multi-app 3.目录结构修改并创建应用子目录 4.应…

年后市场将反弹?服装人做好这些准备,才能赚到2023年第一桶金!

目前&#xff0c;随着防疫政策精准落地、逐步放开&#xff0c;人们对疫情的科学认知不断更新&#xff0c;市场活跃度正逐步恢复。秦丝通过与数万服装老板沟通交流&#xff0c;发现新的模式也在渐渐兴起&#xff0c;国内服装市场将有望迎来反弹。 1、消费氛围活跃&#xff0c;市…

善网ESG周报(第六期)

ESG报告&#xff1a; 宁夏建投城运首份社会责任&#xff08;ESG&#xff09;报告正式发布 12月20日&#xff0c;宁夏建投城市运营管理有限公司发布首份ESG报告。报告显示&#xff0c;其公司将业务与环境保护、社会责任、公司治理相结合打造一条绿色发展道路。 国寿股权投资发…

滚动条基本样式设置

::-webkit-scrollbar 系列属性 详细使用说明 ::-webkit-scrollbar注意&#xff1a;如果没有设置滚动溢出的相关属性&#xff0c;滚动条样式系列属性不会生效&#xff08;resize 除外&#xff09;。属性 ::-webkit-scrollbar 整个滚动条。::-webkit-scrollbar-button 滚动条上的…

Vue3组件化开发(一)

文章目录p11 组件组件的拆分和嵌套组件的CSS作用域组件的通信父子组件的通信父组件传递给子组件props的对象用法非prop的attribute子组件传递给父组件案例p11 组件 组件的拆分和嵌套 推荐安装的VS Cdoe插件 组件的CSS作用域 组件的通信 父子组件的通信 父组件传递给子组件…

模型初始化

在深度学习模型训练中&#xff0c;权重初始值极为重要&#xff0c;一个好的初始值会使得模型收敛速度提高&#xff0c;使模型准确率更准确&#xff0c;一般情况下&#xff0c;我们不使用全零初始值训练网络&#xff0c;为了利于训练和减少收敛时间&#xff0c;我们需要对模型进…

从入门到项目实战 - Vue 计算属性用法解析

Vue 计算属性用法解析上一节&#xff1a;《Vue 监听器用法解析 》| 下一节&#xff1a;《Vue 样式绑定》jcLee95 邮箱 &#xff1a;291148484163.com CSDN 主页&#xff1a;https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址&#xff1a;https://blog.…

衣服、商品、商城网站模板首页,仿U袋网,vue+elementui简洁实现(二)

一.前言 接上一遍博客&#xff1a;《衣服、商品、商城网站模板首页&#xff0c;仿U袋网&#xff0c;vueelementui简洁实现》 在此基础上增加了和完善一些页面&#xff1a; 商品分类筛选页面登录、注册、找回密码共用页面U袋学堂&#xff08;视频专区&#xff0c;视频播放&am…

编译原理——参数传递—传名、传地址、得结果、传值

1.传名&#xff08;替换操作&#xff09; 把这种方式理解为替换操作&#xff0c;把P函数参数X、Y、Z和P函数内部的Y、Z替换为A、B&#xff0c;然后P函数对Y、Z的操作&#xff0c;其实就是对A、B的操作&#xff1b;需要注意这和传地址一样&#xff0c;上面对A造成的变化&#x…

制品仓库 Nexus 安装、配置、备份、使用

目录 1.1 Nexus 优点 1.2 Nexus 仓库类型 2. 安装 Nexus 2.1 设置持久化目录 2.2 拉取 Nexus docker 镜像 2.3 运行并启动 Nexus 3. 系统配置 3.1 配置管理员密码 3.2 配置 LDAP 3.3 配置 Email 服务器 4. 配置 Repository 4.1 添加 Blob Stores 4.2 添加 Reposit…

软考高级考哪个好?

软考高级一共5个科目&#xff0c;含金量都差不多&#xff0c;每个人考证的需求各不相同&#xff0c;合适自己情况的才是最有用的证书。看你自己的工作、专业与哪个更相近&#xff0c;再来深入学习备考的&#xff0c;当然自己也要对考试取证有一定的信心。 高级科目介绍&#x…

【LeetCode每日一题】——剑指 Offer II 072.求平方根

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目注意】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 二分查找 二【题目难度】 简单 三【题目编号】 剑指 Offer II 072.求平方根 …

《图解TCP/IP》阅读笔记(第七章 7.5)—— OSPF 开放最短路径优先协议

7.5 OSPF OSPF&#xff08;Open Shortest Path First&#xff0c;开放最短路径优先&#xff09;是一种链路状态性的路由协议&#xff0c;即使网络中有环路&#xff0c;也可以进行稳定的路由控制。 另外&#xff0c;OSPF支持子网掩码&#xff0c;使得在RIP中无法实现的可变长度…

在简历上写了“精通自动化测试,阿里面试官跟我死磕后就给我发了高薪 offer

事情是这样的 前段时间面试了阿里&#xff0c;大家也都清楚&#xff0c;如果你在简历上面写着你精通 XX 技术&#xff0c;那面试官就会跟你死磕到底。 我就是在自己的简历上写了精通自动化测试&#xff0c;然后就开启了和阿里面试官的死磕之路&#xff0c;结果就是拿到了一份…

【Lilishop商城】No4-2.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-平台注册会员接口开发

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代…

AMQP协议:消费者、生产者与RibbitMQ节点之间的交互流程,RibbitMQ的核心组成部分

原文链接 一、什么是AMQP协议&#xff1f; AMQP全称&#xff1a;Advanced Message Queuing Protocol(高级消息队列协议)。是应用层协议的一个开发标准&#xff0c;为面向消息的中间件设计。 基于此协议的客户端与消息中间件可以传递消息&#xff0c;不受客户端/中间件的不同产品…