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

[ linux-系统 ] 命令行参数 | 环境变量

命令行参数

命令行参数是指用户在启动程序时通过命令行传递给程序的参数。这些参数可以用于控制程序的行为、传递输入数据或配置选项。

在 C/C++ 中,命令行参数通过 main 函数的参数传递

命令行参数列表    argc:参数的个数  argv[]:参数的清单

为什么要有它?看以下代码及运行结果

我们用的指令后面为什么可以带选项,带选项运行结果就不一样,这就是通过命令行参数实现的

同一个程序,可以根据选项的不同,表现出不同的功能

环境变量

在main函数中可以有三个参数,前两个讲过了,第三个参数是环境变量

常见环境变量

PATH

为什么我们编译的代码不能直接写code必须待带./code表示当前路径的文件

而系统的指令就不用带./

系统的指令不用带./,因为系统默认在/usr/bin目录里找,系统的指令已经在usr/bin目录里了
为什么系统知道命令在/usr/bin路径下?

因为环境变量PATH,告诉了shell应该去哪一个路径下查指令

查看PATH

 PATH是指定路径的集合,系统可执行文件的搜索集合

如果我不想带路径,让我的程序运行起来?

1. cp /usr/bin

2.把自己的路径,添加到PATH中

我们把xshell关掉再重新打开,看看PATH会不会变

发现我们改过的PATH又回到初始状态了,这说明环境变量PATH是内存级别的。那么最开始环境变量的内容是从哪里来的--开始都是在系统配置文件中的

我们登陆xshell,启动一个xshell进程->读取用户和系统相关环境变量的配置文件->形成自己的环境变量表

配置文件在家目录里 .bashrc  .bach_profile

 

我们在配置文件中,PATH加上我们的路径,这样我们即使关掉xshell再打开,我们的路径在PATH中也不会消失了。

HOME

当前路径对应的家目录

发现用户身份变化,同一个HOME变量,但是环境变量的内容是不一样的

是默认在我的家目录下才设置的环境变量,还是先读取环境变量,把我当前的用户设置进当前的默认路径呢?

当我们登陆的时候,先创建bash,bash读取环境变量配置文件->PATH,HOME已经被设置好了,bash也是一个进程也有自己的cwd,环境变量HOME就是用户登陆时的cwd

获取环境变量

getenv()

PWD是保存进程所在的工作路径的,进程能获得自己所在的路径

可以写一个程序只让某一个用户进行访问

sunhao用户可以正常访问

切换到root,不可以访问

环境变量的导入删除和验证

shell中既有本地变量又有环境变量

set可以查到本地变量以及环境变量的信息

 使用export命令设置新的环境变量。

删除环境变量

unset 

本地变量和环境变量都是bash进程维护的字符串

 本地变量不会子进程被继承,环境变量会被子进程继承

下面代码验证环境变量会被子进程继承

最开始ISRUNNING=1,ISRUNNING在本地变量中,子进程不能继承

后来把ISRUNNING  export导入环境变量中,子进程可以继承

 上面代码确实验证了环境变量可以被bash的子进程继承,那么子进程再fork()出来的子进程也会继承环境变量吗?可以的。这就说明环境变量具有"全局属性"

为什么?

1.系统的配置信息,尤其是具有指导性的配置信息,他是系统配置起效的一种表现

2.进程具有独立性,环境变量可以用来进程间传递数据(只读数据)

第三方变量environ获取环境变量

http://www.xdnf.cn/news/6728.html

相关文章:

  • 数据库--向量化基础
  • C++跨平台开发:突破不同平台的技术密码
  • 从硬件角度理解“Linux下一切皆文件“,详解用户级缓冲区
  • 增量学习:机器学习领域中的资源高效利用秘籍
  • HTTPS 加密原理
  • 编译原理概述
  • 将three.js场景保存成图片
  • IEEE PRMVAI 2025 IEEE PRMVAI 探索人工智能在基础设施建设应用与运维中的新挑战
  • 某某建筑市场监管公共服务平台|数据解密—逆向分析
  • rocketmq 环境配置[python]
  • 记录算法笔记(2025.5.15)将有序数组转换为二叉搜索树
  • unity之导入本地packages包
  • 【云实验】搭建个人网盘实验
  • OSM路网简化文档+实操视频讲解(道路中心线提取、拓扑检查,学术论文处理方式)11
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(22):复习
  • AI基础知识(04):技术支柱、核心概念、开发工具、学习路径、伦理与挑战
  • python中常用的参数以及命名规范
  • Python - 爬虫;Scrapy框架之items,Pipeline管道持久化存储(二)
  • 每周靶点:HE4、S100β及文献分享
  • 安装ruoyi-vue-pro后台管理系统并启动bpm工作流模块
  • SAP EWM外向交货单过账/SCWM/GM043 错误
  • 数据库故障排查指南:从入门到精通
  • MySQL联表查询:多表关联与嵌套查询指南
  • 【C++】 一文读懂 std::latch
  • XML介绍及常用c及c++库
  • Python 在Excel单元格中应用多种字体样式
  • 5月16日复盘-目标检测开端
  • Grafana分布统计:Heatmap面板
  • 关于 2025 年国产化 AI 算力盒子的报告
  • 一发入魂:极简解决 SwiftUI 复杂视图未能正确刷新的问题(中)