环境变量【使用命令行参数引出环境变量】

前提:命令行参数

大家在写C/C++程序的时候肯定见过下面这种情况:
在这里插入图片描述
main函数里面携带的参数,平常写代码过程中很少用到这两个参数,接下来我们就研究一下

我们也不知道 指针数组argv里面到底保存的是什么,也不知道这个argc到底代表的意思是什么?
那我们尝试直接打印出来,进行观察:
在这里插入图片描述
在这里插入图片描述
接下来我们在bash中再输入:
在这里插入图片描述
结果就接着显示输入的字符

因此我们发现:*agrv是一个指针数组,是一个字符类型的,说明里面保存的是字符串的地址,通过命令行结果我们发现每一个字符以空格为分隔符,将字符串的地址保存在*argv中,最终*argv数组以NULL结尾,第一个都是可执行文件的名字+路径

命令函参数的作用:
1、命令行参数是外部的数据,外部的数据通过主函数的参数传递进函数的内部,这就相当于把写的程序 的扩展性更高了。
2、命令行参数一般是文件的路径。程序里面一般是处理一些文件的,文件的路径就作为命令行参数传递进主函数里面,然后通过文件的路径,去处理这个文件。
3、可以使用命令函参数区分用户,进而做出不同人走不同代码的逻辑


文章目录

  • 前提:命令行参数
  • 环境变量
  • 一、什么是环境变量?
  • 二、查看环境变量的方法
  • 三、常见的环境变量
  • 四、添加自己定义的环境变脸到环境变量表中


环境变量

环境变量的问题引入
平时我们在使用Linux的时候,使用的一些指令比如:touch、ls -a、 ls -a -l等等
这些指令的本质是什么的?第一个参数是要执行的程序,第二个参数是(后面的选项去全部都是字符串,会以命令行参数的形式传递给对应的形参,最终根据参数的值,让同一个程序执行不同的功能)

我们在Linux系统中进行操作的时候通常会发现,当我们使用系统的命令的时候,比如:ls,pwd,cd等等,通常不需要带对应的命令的路径,只需要直接输入指令即可,其实这些指令都是程序,而当我们运行自己写的程序的时候却发现必须带相关路径,如果没带路径,就会报出:command not found的错误,其实也很好理解,因为我们要执行一个命令或者程序首先肯定要找到这个程序或者命令,知道这个程序或者路径在哪里,才能够执行它,而系统中的命令不需要带路径就能执行的原因跟今天要学习的环境变量中的PATH变量有关系


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是环境变量?

环境变量:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数(变量),如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们所链接的动态静态库(后面学)在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。还有其他用途等后面学完了常见的环境变量就能够理解了,环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

二、查看环境变量的方法

  • env: 用于查看系统中所有环境变量的命令
    在这里插入图片描述

  • 也可以使用env配合之前学习的文本行过滤工具:比如env|grep PATH,这样可以方便找到我们想要的环境变量
    在这里插入图片描述

  • 使用echo &环境变量名称 echo $PATH
    在这里插入图片描述

  • 使用getenv()函数获得环境变量的内容 头文件:#include<stdlib.h>
    在这里插入图片描述
    在这里插入图片描述

  • 使用命令行参数在程序里获取环境变量 echo $PATH
    在这里插入图片描述
    在这里插入图片描述


三、常见的环境变量

PATH
在这里插入图片描述

PATH 打印出来是一个字符串,这个字符串以:作为分隔符,每一个子串都是一个搜索路径,因此执行指令:ls、pwd、touch等等指令的之后,会在PATH换将变量里面的搜索路径中逐个寻找。所以我们自己写的程序在调用的时候为什么还要进行路径的指定呢?因为在PATH中没有添加我们自己写的程序的搜索路径,因此就需要进行手动添加路径

追加PATH变量里面的值:PATH = $PATH:路径 PATH = $PATH:/bin/root/........

PWD
在这里插入图片描述
原因是在系统当中会存在一个环境变量:PWD,它是记录当前所处路径的环境变量,当我们使用cd切换路径的时候,PWD就会发生改变,然后pwd指令直接读取环境变量里面的值即可
普通用户的家目录:/home/xxx
root用户的家目录:/root

HOME
这个环境变量在用户登陆的时候就已经被设置好了,root账号设置成/root,普通用户设置成/home/xxx,之后要想进入自己的家目录,直接cd $HOME即可


四、添加自己定义的环境变脸到环境变量表中

命令行启动的进程都是shell/bash的子进程,子进程的命令参数和环境变量是父进程通过bash传递给我们的,当我们更改环境变量的信息的时候,虽然更改后环境变量的值会修改,但是我们在重新启动xshell之后,环境变量又变回系统配置的值了,所以我们可以得出:每一次在登陆xshell的时候bash解释器会自动从某个地方读取自动形成自己的环境变量表信息

**那么父进程的环境变量信息从哪里读取呢?**我们每一名用户在自己的家目录下都会存在一个隐藏的文件.bash_profile,你的bash进程都会读取这个配置文件,形成一张环境变量表信息

在这里插入图片描述

  • 添加自己定义的环境变量到配置文件中,使得每一次登陆xshell的时候,可以使用env查看到自己定义的环境变量。export 环境变量名称=值

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

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

相关文章

Python基础--PART1

最近闲来无事&#xff0c;学习使用Python也有好几年了&#xff0c;一直没有系统的总结&#xff0c;现在有时间就写一写个人的一些拙见。 PART1. 核心语法(基础语法) 1. 变量 1.1 变量的定义 ​ 变量就是可变的量&#xff0c;对于一些有可能会经常变化的数据&#xff0c;我们…

上海亚商投顾:沪指震荡调整 转基因概念股逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日低开低走&#xff0c;深成指、创业板指均跌超1%&#xff0c;双双创出年内新低。转基因概念股逆势大涨…

风电机浪涌保护器的防雷作用和意义

风电是一种利用风能转化为电能的清洁新能源&#xff0c;具有节约资源、减少污染、降低碳排放等优点。随着风电技术的发展和应用&#xff0c;风电场的规模和数量也不断增加&#xff0c;为人类提供了可持续的电力供应。然而&#xff0c;风电场也面临着一些挑战和风险&#xff0c;…

【NPM】vuex 数据持久化库 vuex-persistedstate

在 GitHub 上找到&#xff1a;vuex-persistedstate。 安装 npm install --save vuex-persistedstate使用 import { createStore } from "vuex"; import createPersistedState from "vuex-persistedstate";const store createStore({// ...plugins: [cr…

实验室超声波清洗机的作用

实验室超声波清洗机的作用是什么&#xff1f;顾名思义&#xff0c;其主要作用是清洗。超声波清洗机是实验室中必不可少的清洗装置&#xff0c;利用超声波在液体中的空化效应&#xff0c;产生空化气泡&#xff0c;由于正负压的作用下&#xff0c;空化气泡会在短时间内生成并爆破…

利用爬虫采集音频信息完整代码示例

以下是一个使用WWW::RobotRules和duoip.cn/get_proxy的Perl下载器程序&#xff1a; #!/usr/bin/perluse strict; use warnings; use WWW::RobotRules; use LWP::UserAgent; use HTTP::Request; use HTTP::Response;# 创建一个UserAgent对象 my $ua LWP::UserAgent->new();#…

药物滥用第四篇介绍

OXY&#xff1a; 羟考酮&#xff08;Oxycodone&#xff0c;OXY&#xff09;&#xff0c;分子式为C18H21NO4&#xff0c;是一种半合成的蒂巴因衍生物。羟考酮为半合成的纯阿片受体激动药&#xff0c;其作用机制与吗啡相似&#xff0c;主要通过激动中枢神经系统内的阿片受体而起镇…

Vite 踩坑 —— require is not defined

动态require引入图片报错 require 是属于 Webpack 的方法&#xff0c;而我使用的是 Vite&#xff0c;所以我们需要去寻找 Vite 静态资源处理的方法 所以&#xff0c;我们只需要将代码改写以下形式即可。 ​ template <CarouselItem v-for"(item,index) of carous…

基于安卓Android的人在旅途旅行出行APP

项目介绍 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库…

Mini小主机All-in-one搭建教程6-安装苹果MacOS系统

笔者使用的ESXI7.0 Update 3 抱着试试的态度想安装一下苹果的MacOS系统 主要步骤有2个 1.解锁unlocker虚拟机系统 2.安装苹果MacOS系统 需要下载的文件 unlocker 这一步是最耗时间的&#xff0c;要找到匹配自己系统的unlocker文件。 https://github.com/THDCOM/ESXiUnloc…

解决appium或selenium使用时driver.find_element_by_xpath中间有删除线问题

一、问题描述 Darren洋在公司电脑搭建完成appium后准备运行appium2.0版本执行脚本时发现执行脚本中的driver.find_element_by_xpath中间有删除线&#xff0c;说明较高版本的appium及selenium中该方法已被弃用。 二、解决办法 该问题解决办法为将driver.find_element_by_xpath()…

音视频技术开发周刊 | 315

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 OpenAI科学家最新演讲&#xff1a;GPT-4即将超越拐点&#xff0c;1000倍性能必定涌现&#xff01; GPT-4参数规模扩大1000倍&#xff0c;如何实现&#xff1f;OpenAI科学家…