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

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

前提:命令行参数

大家在写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.lryc.cn/news/197875.html

相关文章:

  • 【Java 进阶篇】JavaScript BOM History 详解
  • 【计算机网络】https协议
  • React之受控组件和非受控组件以及高阶组件
  • 中国移动集采120万部,助推国产5G赶超iPhone15
  • 华为云HECS服务器下docker可视化(portainer)
  • postman发送soap报文示例
  • 力扣-python-两数之和
  • 算水质TDS加温度补偿
  • wps/word 如何让表格的标题和表格名称文本(表1-1 xxx)跨页显示(已解决)
  • 攻防世界web篇-PHP2
  • Kotlin中的步长
  • 3. 无重复字符的最长子串
  • 通过SPI传输BMI160数据到nrf528xx
  • MAYA教程之建模基础命令介绍
  • 文档外发控制与安全:实现高效协作与数据安全的关键
  • 在线课堂知识系统源码系统+前端+后端完整搭建教程
  • CSS之布局系列--顶部导航栏二级菜单居中展示
  • 算法通关村第九关黄金挑战——透彻理解二叉树中序遍历的应用
  • 【算法设计与分析zxd】第7章 贪心法
  • CCF CSP认证 历年题目自练Day35
  • 应用crash时发送广播及信息
  • 【亲测可用】图像目标识别入门-利用笔记本电脑摄像头识别人脸标记出来采用深度学习模型实现
  • 数字孪生技术:煤矿运输的未来革命
  • 一些bug总结
  • 第三章 内存管理 九、基本分段存储管理方式
  • 轻重链剖分+启发式合并专题
  • IRC/ML:金融智能风控—信贷风控场景简介、两大场景(贷款场景+信用卡场景)、信用卡评分模型设计、反欺诈检测技术的简介、案例应用之详细攻略
  • 【学习笔记】RabbitMQ01:基础概念认识以及快速部署
  • Java数据结构之第二十章、手撕平衡AVL树
  • SQL 在PostgreSQL中使用SQL将多行连接成数组