Linux环境变量剖析

一、什么是环境变量

概念:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序所将使用到的信息,总结就是环境变量存储了执行程序/命令要用到的信息。

如何理解环境:用户一般通过shell跟内核通信,对于linux系统,具体的shell就是bash,从而就有了bash环境,在bash环境中就会有很多默认的环境变量,例如PATH,环境中储粮有环境变量还有自定义变量。

如何理解变量:变量就是可以随意给其赋值的一个存储单元,其作用要么是被赋值要么是被读取值。

  • 二、常见的环境变量

2.1 PATH

作用:PATH包含了指定命令的搜索路径,指定操作系统需要使用到的可执行程序的位置。

思考:

1.为什么执行命令名 ls 不用加 "./",但执行自己编译链接生成的可执行程性程序要"./"。

  • 原因是在系统PATH环境变量里面存储了很多条路径,当运行命令时会逐个在路径下找该命令,而ls,cd等指令已经被存储进PATH环境变量,故而无需加“ ./ ”,对于自己的可执行程序,并没有添加到环境变量中,所以需加“ ./ ”是通过相对路径指定在当前目录下才能被bash找到并运行

2.如何查看命令的路径?

  • ls为例,通过which lswhereis ls可查看ls命令路径

3.如何查看PATH环境变量?

  • 通过echo $PATH可查看PATH环境变量

4.如何让自己的程序执行时不用加“ ./ ”

1)将程序拷贝到/user/bin目录下,不推荐
   sudo cp -f myproc /user/bin
 2)用export将程序的路径添加到环境变量
   export PATH=$PATH:/home/yxy/mycodes
   意思是新的PATH=旧的PATH + 要添加的路径(/home/yxy/mycodes),这样当你运行你的程序时不用加“ ./ ”也可以让bash找到
 注意:当前所做的工作只是修改这变量,只对当前的shell有效,即使清空了也没事,重新登录后PATH会被恢复成原始态

2.2 HOME

作用: 存放当前用户的主工作目录(也称家目录)
演示:通过echo $HOME查看HOME变量

可以看到:在普通用户时HOME变量显示的是当前用户的主工作目录,当切换为root账号时HOME变量显示的是root用户的主工作目录

2.3 SHELL

作用: 查看用户使用的是哪种命令行解释器
演示:通过echo $SHELL查看SHELL变量

可以看到:用户使用的Shell解释器名称是bash

三、查看与设置变量

  • shell变量(局部变量):只在命令行设定(没有export)的变量叫局部变量,局部变量只在本进程(bash)内有效
  • 环境变量(全局变量):环境变量对创建它的Shell及其派生出来的子进程都有效,也即是说环境变量可以继承,从当前shell脚本执行的任何应用程序都会继承这个变量

如何设置局部变量: 通过 变量名=变量值 语句设定,如 MYVAL=100,注意=号之间不能有空格,否则shell会把变量名当成命令,变量名应该用大写字母
如何设置环境变量: 通过 export 变量名=变量值 语句设定,如 export MYVAL=100
查看变量:
  1. env 指令可以查看所有环境变量
  2. set 指令显示本地定义的shell变量和环境变量
清除环境变量: 通过 unset 变量名 语句设定,如 unset MYVAL
 

四、如何理解命令行带参本质

命令带参的本质: 是给main函数传递不同的参数使之执行不同的功能,main函数的参数分两种:命令行参数和环境变量,命令行参数使得main函数可以执行不同的功能,而系统会给所有进程传递环境变量

该代码编译链接生成myproc可执行程序:

注:./myproc运行可执行程序与执行ls,cd等命令本质是一样的,可通过将将程序的路径添加到环境变量则运行myproc时可不加“ ./ ”

由此得出argv指针数组的布局:

五、如何通过代码获取环境变量

envp数组:储存系统的环境变量信息,由系统提供,布局和argv指针数组一致
一个程序来说明:

结论:
  当程序跑起来变成了进程,该进程可获得环境变量 -> 也就是说:环境变量是一个系统级别的全局变量,bash之下的所有进程都可以获取
  为何系统级环境变量配置文件/etc/profile,/etc/environment中的声明的环境变量可以被所有进程访问到?是因为这些文件都是被init进程处理的, 而init进程是所有进程的祖先进程,这也就验证了子进程会继承父进程的环境变量,也可以理解为环境变量具有全局属性
 

程序中用其他方式获取环境变量:

 1. 可通过第三方变量environ获取:通过 extern char **environ ,libc中定义的全局变量environ指向环境变量表

	 extern char **environ;//第三方变量for(int i=0;environ[i];i++){printf("environ[i]:%s\n",environ[i]);//environ[i]是不同的环境变量}

2.通过getenv(“变量名”)获取变量的内容

 #include<stdio.h>#include<stdlib.h>                                                              int main()                           {                                    printf("%s\n", getenv("PATH"));  return 0;                        }

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

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

相关文章

APIGEE:用于API代理的CI / CD管道

在本文中&#xff0c;我们将看到如何为APIGEE API代理创建CI / CD管道。 我已经参考了APIGEE社区上同一主题的几篇文章。 这些给了一些关于如何为API代理设置CI / CD管道的想法。 这是我用来设置CI / CD的工具。 詹金斯 节点 蜂胶 新人 APIGEE管理API 确保已创建APIGEE边…

【渝粤教育】广东开放大学 知识产权法 形成性考核 (34)

选择题 题目&#xff1a;作品的独创性要求作品系作者独立完成&#xff0c;不是抄袭而来。 题目&#xff1a;下列关于发行权的表述&#xff0c;不正确的是&#xff08; &#xff09; 题目&#xff1a;下列哪一情形可以授予专利&#xff1f;&#xff08; &#xff09; 题目&#…

01_3基带传输的常用码型和码间串扰

第十七讲 基带传输的常用码型和码间串扰 第一节 基带传输的常用码型 一、数字基带信号的编码规则 基带传输对信号的要求&#xff08;即独立又有联系&#xff09; 对传输码型的要求&#xff1a;原始消息码必须编成适合于信道传输用的码型&#xff08;码型的选择&#xff09; …

【渝粤教育】广东开放大学 网络市场调查与预测 形成性考核 (23)

选择题 题目&#xff1a;&#xff08;&#xff09;是利用互联网发掘和了解顾客需求、市场机会、竞争对手、行业潮流、分销渠道以及战略合作伙伴等方面的情况。 题目&#xff1a;市场调查首先要解决的问题是&#xff08; &#xff09;。 题目&#xff1a;为了在市场调查方案实施…

移动通信考前预习_第1章_无线通信系统概述

下周考试&#xff0c;开始预习。 第一章为概念&#xff0c;直接copyPPT。 第1章 无线通信系统概述 一、移动通信发展 1、第一代 80年代——模拟通信时代&#xff08;1G&#xff09; 典型系统&#xff1a;AMPS系统&#xff08;先进移动电话系统&#xff09;、TACS系统&#…

【渝粤教育】广东开放大学 财务管理 形成性考核 (58)

选择题 题目&#xff1a; 市场宣传的首要步骤就是确定&#xff08; &#xff09;&#xff0c;从而明确宣传目标和宣传内容。 选择一项&#xff1a; 答案&#xff1a;看左侧 题目&#xff1a;下列各项中体现债权与债务关系的是&#xff08; &#xff09; 答案&#xff1a;看左侧…

java 调试 工具_Java调试器–权威的工具列表

java 调试 工具Java调试是一个复杂的空间。 调试器的类型很多&#xff0c;工具也很多。 在此页面中&#xff0c;我们将介绍7种类型的调试器之间的区别&#xff0c;并查看每个类别中的主要工具&#xff0c;以帮助您为正确的工作选择正确的工具。 以下是我们介绍的调试器类型&a…

移动通信考前预习_第2章_蜂窝技术

一、蜂窝的概念 1、系统级的概念&#xff1a;用许多小功率的发射机&#xff08;小覆盖区&#xff09;来代替单个的大功率发射机&#xff08;大覆盖区&#xff09;&#xff0c;每个小覆盖区只提供服务范围内的一小部分覆盖。 2、不需要做技术上的重大修改&#xff0c;没有增加额…

【渝粤教育】电大中专中成药作业 题库

试卷答案 1.风寒感冒患者宜选用的中成药是&#xff08;&#xff09;。 A.连花清瘟胶囊 B.双黄连颗粒 C.银翘解毒颗粒 D.桑菊感冒颗粒 E.感冒清热颗粒 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;E 2.症见恶寒发热、头痛鼻塞、咳嗽痰多、胸闷呕逆、乏力气短宜选用的…

在Java 8之前的项目中使用JUnit 5

这篇文章演示了如何在Java 8之前的项目中使用JUnit 5&#xff0c;并解释了为什么它是一个好主意。 JUnit 5至少需要Java 8作为运行时环境&#xff0c;因此您想将整个项目更新为Java8。但是有时由于某些原因&#xff0c;您无法立即将项目更新为Java8。例如&#xff0c;应用程序…

移动通信教学大纲

1、绪论 基本内容&#xff1a;移动通信的发展概况和发展趋势&#xff1b;移动通信的概念、主要特点及其分类&#xff1b;移动通信的基本技术。 要求&#xff1a;了解移动通信概念、特点和分类&#xff0c;了解移动通信发展历史、基本技术和未来发展方向。 2、移动通信中的电波传…

移动通信蜂窝原理例题整理

目的很功利&#xff1a;会做题。 So~~上题&#xff01;&#xff01;&#xff01; 1、求波长和天线长度。 不接地天线长度是半波长整数倍&#xff0c;接地是1/4波长整数倍&#xff08;地面镜像效应&#xff09;。 2、大区制小区制概念理解 举例&#xff1a;30个双向信道 1、大…

spss三次指数平滑_17 统计学:SPSS基础

内容目录为什么要学习SPSSspss发展史spss操作界面spss基本使用方式SPSS的常用操作数据管理spss制作图表使用spss进行描述统计分析1.为什么要学习SPSS统计分析软件是数据分析的主要工具统计设计完成后&#xff0c;完整的分析过程包括数据的搜集数据的整理数据的分析结果的报告统…

【渝粤教育】电大中专就业指导(1)作业 题库

试卷答案 1.&#xff08; &#xff09;给中职生就业带来的机遇和挑战 A.“十三五”规划 B.一带一路 C.发展标准化服务业 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.最受企业欢迎的人才应具备&#xff08; &#xff09;素质 A.道德品质、文化认同、敬业精神、…

Spring构造函数依赖注入示例

欢迎使用Spring构造函数依赖注入示例指南。 基于构造器的依赖注入是Spring 依赖注入的一种 。 依赖注入的另一种类型是Setter注入和字段注入。 有关Spring依赖注入的更多信息&#xff1a; Spring二传手注射的例子 Spring田间注入 依赖注入–构造函数与现场注入 依赖注入和…

【渝粤教育】电大中专常见病药物治疗 (2)作业 题库

1.作为退热药&#xff0c;阿司匹林的劣势是&#xff08;&#xff09;。 A.口服吸收迅速而完全 B.婴幼儿发热用阿苯片 C.儿童用药可引起Reye综合征&#xff0c;尤其是病毒性感染引起的发热 D.作用于下丘脑体温调节中枢 E.解热镇痛作用较强 错误 正确答案&#xff1a;左边查询 学…

移动通信例题整理_第3章_无线信号的衰落

考前预习,只为做题。从题目出发,补充相关概念知识点。 S1 课件例题 一、求接收功率 1、例:如果发射机发射50W的功率,将其换算成(a)dBm和(b)dBW。如果该发射机为单位增益天线,并且载频为900MHz,求出在自由空间中距天线100m处接收功率为多少dBm。10km处 P r P_r P

outlook邮箱邮件内容乱码_VBA:Outlook和Excel综合运用

很多企业公司使用微软OUTLOOK作为公司邮箱进行业务往来。 我们经常需要将一些表格数据也展示给收件人&#xff0c;但是又不需要将整个工作簿添加为附件&#xff0c;那么最好的方法就是复制指定单元格区域内容然后粘贴进新邮件界面内就可以了。 偶尔写一个邮件&#xff0c;这样做…

JDK 9、10和11中的安全性增强

缩短JDK发布周期的原因之一是有可能推出更快的安全错误修复和增强功能。 在本文中&#xff0c;我们将简要回顾一下最新JDK版本中引入的主要安全增强功能。 由于这些增强功能中的大多数与TLS相关&#xff0c;因此必须了解TLS握手过程&#xff0c;如下图所示&#xff1a; JDK 9 …

【渝粤教育】电大中专建设工程法规 (2)作业 题库

1.建造师在工作中&#xff0c; 必须严格遵守法律、行政、 行业管理规范、 职业道德。 A.正确 B.错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.行政法规的制定主体是&#xff08; &#xff09;。 A.全国人民代表大会 B.最高人民法院 C.全国人民代表大会及其…