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

Linux环境变量详解命令行参数

🌟目录

  • 📝1. 什么是环境变量?
  • 📝2. 查看系统的环境变量
  • 📝3. 添加环境变量
  • 📝4. 环境变量用例
  • 5. 命令行参数


好雨知时节
当春乃发生
随风潜入夜
润物细无声


📝1. 什么是环境变量?

环境变量是操作系统中用于存储系统和用户信息的动态命名值。它们可以影响程序的行为和系统的运行方式。环境变量通常包含诸如系统路径、用户目录、配置设置等信息。

例如:在我们编写C/C++程序时,在链接的时候,从来不知道我们的所链接的动静态库在哪里,但链接照样可以成功,生成可执行程序,原因就是有相关的环境变量帮助编译器进行查找。

  • 动态性:环境变量可以在程序运行时被修改,适应不同的运行环境。

  • 作用域:环境变量可以是全局的(对所有用户和进程可见)或局部的(仅对特定进程可见)。

  • 键值对形式:环境变量以键值对的形式存储,如 KEY=VALUE。

  • 系统级和用户级:环境变量可以在系统级别配置(影响所有用户)或用户级别配置(仅影响特定用户)。

  • 可访问性:程序可以通过系统调用或库函数访问环境变量,通常用于获取配置信息。

  • 优先级:同名环境变量可能存在于不同的作用域中,局部变量通常优先于全局变量。

📝2. 查看系统的环境变量

非常简单:

echo $PATH

即可查看到系统的环境变量。其中环境变量路径是以冒号为分隔符。

在这里插入图片描述

Tips: which查找路径

在这里插入图片描述


📝3. 添加环境变量

export PATH=$PATH:/home/vimer/Test # 冒号后跟需要添加的路径

这里$PATH代表环境变量里原来的内容,向其后面添加我们要添加的环境变量。

示例:在Test文件夹下,make生成mytest可执行程序后,通常的运行方法是:./mytest。当我们把当前文件目录添加到系统的环境吗变量后,我们可以直接在命令行mytest即可成功执行程序。

在这里插入图片描述

因此,把可执行程序,拷贝到系统默认路径下,就让我们可以直接访问的方式——相当于Linux下软件的安装


📝4. 环境变量用例

#include <stdio.h>int main(int argc,char *argv[],char* envp[]){//指针数组for(int i = 0;envp[i];i++){printf("envp[%d]->%s\n",i,envp[i]);}return 0;
}

在这里插入图片描述


环境变量本质就是内存级的一张表, 这张表由用户在登陆系统的时候,进行给特定用户形成属于自己的环境变量表。
环境变量中的每一个,都有自己的用途:有的是进行路径查找的,有的是进行身份认证的,有的是进行动态库查找的,有的是用来确认当前路径等等;每一个环境变量都有自己的特定应用场景。


5. 命令行参数

#include <stdio.h>int main(int argc,char *argv[]){//指针数组//存放参数//for(int i = 0;argv[i];i++){for(int i = 0;i<argc;i++){printf("argv[%d]->%s\n",i,argv[i]);}return 0;
}

char *argv[]为指针数组,-a -b -c 都为命令行参数列表选项,argc为表元素个数。

在这里插入图片描述

可以看到,o号下表永远代表着可执行程序,argc是 参数个数。


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?
  • 虚拟现实智能家居实训系统实训解决方案
  • Rust 变量基础知识
  • 如何彻底清除电脑上的数据?保护你的隐私安全
  • 阿里云服务器 篇八:图片展示和分享网站(纯静态,数据信息和展示页面分离)
  • 关于RabbitMQ消息丢失的解决方案
  • 怎么修复松下相机死机视频只有0字节(0KB)的MDT文件【实测可修复】
  • 《深度学习》OpenCV 高阶 图像直方图、掩码图像 参数解析及案例实现
  • [论文笔记] CSFCN
  • Python 入门教程(3)基础知识 | 3.1、基础语法
  • 即插即用篇 | YOLOv10 引入矩形自校准模块RCM | ECCV 2024
  • Macbook增加扩展屏待机重开后软件界面错乱问题解决方案
  • 【vue3|第28期】 Vue3 + Vue Router:探索路由重定向的使用与作用
  • Ready Go
  • rust学习笔记
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 07.Android之多媒体问题
  • E-HPC支持多队列管理和自动伸缩
  • JavaScript 基本功--面试宝典
  • Javascript弹出层-初探
  • JavaScript新鲜事·第5期
  • Java面向对象及其三大特征
  • java取消线程实例
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • PHP的类修饰符与访问修饰符
  • 给初学者:JavaScript 中数组操作注意点
  • 如何设计一个微型分布式架构?
  • 使用docker-compose进行多节点部署
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 正则表达式
  • 【干货分享】dos命令大全
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2020)Java后端开发----(面试题和笔试题)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (三)终结任务
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 未来三学期想要修的课 (日記)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)Sql Server 保留几位小数的两种做法
  • (转)我也是一只IT小小鸟
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .Net Core 微服务之Consul(二)-集群搭建