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

前提:命令行参数

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

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

相关文章

Spring 国际化:i18n

文章目录 i18n概述Java国际化Spring6国际化MessageSource接口使用Spring6国际化 i18n概述 国际化也称作i18n&#xff0c;其来源是英文单词 internationalization的首末字符i和n&#xff0c;18为中间的字符数。由于软件发行可能面向多个国家&#xff0c;对于不同国家的用户&…

Apacheb Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

Apache Shiro 1.2.4反序列化漏洞&#xff08;CVE-2016-4437&#xff09; 1 在线漏洞解读: https://vulhub.org/#/environments/shiro/CVE-2016-4437/2 环境搭建 cd /home/kali/vulhub/shiro/CVE-2016-4437启动&#xff1a; sudo docker-compose up -d # 拉取下载并启动sud…

PyQt 小程序

设备管理程序 v0.0.1.0, 终于出了一个基础版本,… … 两个字典的键值判断 辛亏用的是Python 这个编码时间大大缩短了 对已有的命令行进行GUI 化 from typing import Optional import PySide6.QtCore import PySide6.QtWidgets from cmd_ui import Ui_MainWindow from PySide6.…

亚马逊测评关于IP和DNS的问题

最近不少人询问了关于IP和DNS的问题&#xff0c;在此进行一些科普。 当客户端试图访问一个网站时&#xff0c;首先会向其所在的ISP的DNS服务器进行查询。如果ISP的DNS服务器没有相关缓存&#xff0c;则会向上级DNS服务器进行查询。 一些诸如CDN之类的服务&#xff0c;可能会为…

uni-app小程序使用DCloud(插件市场)流程

一、DCloud&#xff08;插件市场&#xff09; DCloud 是uni-app官方插件市场&#xff0c;里面有官方、团队、个人发布的众多插件&#xff0c;包括uni-ui、uni-pay 等。而像uni-ui这种大型组件库都有官方文档可参考&#xff0c;但一些团队或个人发布的小型插件没有文档&#xf…

STM32-LCD液晶显示

LCD液晶显示 针对野火指南者配套资料&#xff1a;3.2寸 LCD电阻屏&#xff0c;屏幕里自带ILI9341液晶控制器芯片&#xff0c;该控制器芯片中存在GRAM&#xff08;即显存&#xff09;。该液晶控制器使用8080接口与单片机通讯&#xff0c;液晶面板引出来的FPC信号线为8080接口&am…

LeetCode算法刷题(python) Day42|09动态规划|62.不同路径、63. 不同路径 II

目录 LeetCode 62. 不同路径LeetCode 63. 不同路径II LeetCode 62. 不同路径 力扣题目链接 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [[1] * n for _ in range(m)]for j in range(n):for i in range(m):if i 0 and j > 0:dp[i][j] dp[i][j-1…

【vue2高德地图api】02-npm引入插件,在页面中展示效果

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、安装高德地图二、在main.js中配置需要配置2个key值以及1个密钥 三、在页面中使用3.1 新建路由3.2新建vue页面3.2-1 index.vue3.2…

css 好看的边框

1、把图片作为边框 border:10px solid transparent;border-image:url(./assets/images/login_bg.png) 30 round;2、斜线边框 斜线边框可以给页面元素增加一份生动感。可以使用linear-gradient()函数来设置。 .box{position:relative;border-top:4px solid #667db6;border-bot…

网工记背命令(6)----链路聚合配置

目录 1.配置手工负载分担模式链路聚合 2.配置LACP模式的链路聚合 3.HUAWEI设备与C厂商设备对接 链路聚合&#xff08;Link Aggregation&#xff09;是将多条物理链路捆绑在一起成为一条逻辑链路&#xff0c;从而增加链路带 宽的技术。 常用配置命令 1、执行命令 interface …

QTday02(常用类、UI界面下的开发、信号与槽)

今日任务 1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#x…

网页构造与源代码

下载google浏览器 设置打开特定网址&#xff1a;www.baidu.com 查看网页或元素源代码 网页右键选择“检查”查看源代码 网页源代码 元素源代码

Vue3响应式原理初探

vue3响应式原理初探 为什么要使用proxy取代defineProperty使用proxy如何完成依赖收集呢&#xff1f; 为什么要使用proxy取代defineProperty 原因1&#xff1a;defineproperty无法检测到原本不存在的属性。打个&#x1f330; new Vue({data(){return {name:wxs,age:25}}})在vue…

uni-app通过 vuedraggable 创建上下拖动排序组件

我们右键项目 选择 使用命令行窗口打开所在目录 然后 在终端中输入 npm install vuedraggable --save导入 vuedraggable 然后组件编写代码如下 <template><view class"container"><draggable v-model"list" :options"dragOptions&…

Ubuntu 环境配置 Minecraft 基岩版服务器

文章目录 Part 1 搭建服务器Part 2 配置服务器Part 3 管理服务器一、手动备份服务器二、手动恢复服务器备份三、升级服务器 Part 1 搭建服务器 更新软件包信息 sudo apt-get update sudo apt-get upgrade安装所需工具 sudo apt-get vim sudo apt-get install zip sudo apt-g…

训练ChatGPT提示词,实现Excel函数操作

Excel常用表格数据处理都会离不开函数的应用。 在数据处理,数据汇总,数据展示的过程中经常需要各类函数的使用如Vlookup,Sumifs,IF 等。 例如有一份数据我们想根据销售经理的名字,查找对应的销售额。 我们先简单描述一下我们的需求: 帮我写个Excel函数,要求查找出任意销…

ffmpeg+安卓+yolo+RK3399部署

一次满足多项需求. 首先, 思路是, 使用ffmpeg解码本地mp4文件, 在无需任何其他改动的情况下, 就可以直接播放rtsp流, 这个是使用ffmpeg的好处. ffmpeg本身是c语言的, 所以需要编译成jni的库, https://note.youdao.com/s/6XeYftc 具体过程在这里, 用windows/macOS, Ubuntu应该都…

AWD学习总结 (会持续更新)

防御 一、登录ssh服务器 所有人都要登上去。这里以我自己的服务器为例子。一般使用默认的ssh登录方式&#xff0c;我个人服务器ip是120.46.41.173使用工具是xshell与xftp。 点击新建连接。 输入ip。默认ssh端口22不用改就能连接。 然后点击侧边栏&#xff0c;输入账号密码登…

一步一步分析ChatGPT,1 粘性,2 传染性, 3 双边网络效应

请按照以下三个维度一步一步分析ChatGPT&#xff0c;1 粘性&#xff0c;2 传染性&#xff0c; 3 双边网络效应&#xff0c;比如亚马逊的买家和商家的关系 ChatGPT的分析 1.1. 粘性 (Stickiness) 定义&#xff1a; 粘性是指产品或服务对用户的吸引力&#xff0c;即用户在使用…

uniapp-vue3-微信小程序-按钮组wo-btn-group

采用uniapp-vue3实现, 是一款支持高度自定义的按钮组组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id15012 使用示例 <template><vie…