[ 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.mzph.cn/web/80612.shtml

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

相关文章

新书速览|鸿蒙HarmonyOS NEXT开发之路 卷2:从入门到应用篇

《鸿蒙HarmonyOS NEXT开发之路 卷2:从入门到应用篇》 01 本书内容 《鸿蒙HarmonyOS NEXT开发之路 卷2:从入门到应用篇》是一本深度聚焦HarmonyOS NEXT应用开发的全方位指导书,内容遵循由浅入深的原则展开。全书分为基础知识、应用开发进阶和…

经典密码学和现代密码学的结构及其主要区别(1)凯撒密码——附py代码

密码学是一门通过使用代码和密码来保护信息的艺术与科学,其历史可以追溯到数千年前。古典密码学代表了这一古老学科早期的篇章。早在计算机和现代加密算法出现之前,历史上的各个文明就依靠巧妙的方法来保护机密、安全通信以及获取战略优势。 古典密码学…

Python60日基础学习打卡D30

回顾: 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) # 直接导入 from random import randint print(randint(1, 10)) # 导入自定义库 import module m…

Linux利用多线程和线程同步实现一个简单的聊天服务器

1. 概述 本文实现一个基于TCP/IP的简单多人聊天室程序。它包含一个服务器端和一个客户端:服务器能够接收多个客户端的连接,并将任何一个客户端发来的消息广播给所有其他连接的客户端;客户端则可以连接到服务器,发送消息并接收来自…

ubuntu系统 | dify+ollama+deepseek搭建本地应用

1、安装 Ollama 下载并安装 Ollama (llm) wangqiangwangqiang:~$ curl -fsSL https://ollama.ai/install.sh | bash >>> Installing ollama to /usr/local >>> Downloading Linux amd64 bundle0.3% curl -fsSL https://ollama.ai/install.sh (下…

从纸质契约到智能契约:AI如何改写信任规则与商业效率?​——从智能合约到监管科技,一场颠覆传统商业逻辑的技术革命

一、传统合同的“低效困境”:耗时、昂贵、风险失控 近年来,全球商业环境加速向数字化转型,但合同管理却成为企业效率的“阿喀琉斯之踵”。据国际商会(International Chamber of Commerce)数据显示,全球企业…

【机器学习|学习笔记】基于生成对抗网络的孪生框架(GAN-based Siamese framework,GSF)详解,附代码。

【机器学习|学习笔记】基于生成对抗网络的孪生框架(GAN-based Siamese framework,GSF)详解,附代码。 【机器学习|学习笔记】基于生成对抗网络的孪生框架(GAN-based Siamese framework,GSF)详解,附代码。 文章目录 【机器学习|学习笔记】基于生成对抗网络的孪生框架(G…

UEFI Spec 学习笔记---33 - Human Interface Infrastructure Overview---33.2.6 Strings

33.2.6 Strings UEFI 环境中的 string 是使用 UCS-2 格式定义,每个字符由 16bit 数据表示。对于用户界面,strings 也是一种可以安装到 HIIdatabase 的一种数据。 为了本土化,每个 string 通过一个唯一标识符来识别,而每一个标识…

Stable Diffusion 学习笔记02

模型下载网站: 1,LiblibAI-哩布哩布AI - 中国领先的AI创作平台 2,Civitai: The Home of Open-Source Generative AI 模型的安装: 将下载的sd模型放置在sd1.5的文件内即可,重启客户端可用。 外挂VAE模型&#xff1a…

并发编程(5)

抛异常时会释放锁。 当线程在 synchronized 块内部抛出异常时,会自动释放对象锁。 public class ExceptionUnlockDemo {private static final Object lock new Object();public static void main(String[] args) {Thread t1 new Thread(() -> {synchronized …

贵州某建筑物挡墙自动化监测

1. 项目简介 某建筑物位于贵州省某县城区内,靠近县城主干道,周边配套学校、医院、商贸城。建筑物临近凤凰湖、芙蓉江等水系,主打“湖景生态宜居”。改建筑物总占地面积:约5.3万平方米;总建筑面积:约15万平…

6个月Python学习计划:从入门到AI实战(前端开发者进阶指南)

作者:一名前端开发者的进阶日志 计划时长:6个月 每日学习时间:2小时 覆盖方向:Python基础、爬虫开发、数据分析、后端开发、人工智能、深度学习 📌 目录 学习目标总览每日时间分配建议第1月:Python基础与编…

【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit (3)

1.问题描述: 通过CardRecognition识别身份证拍照拿到的照片地址,使用该方法获取不到图片文件,请问如何解决? 解决方案: //卡证识别实现页,文件名为CardDemoPage,需被引入至入口页 import { …

AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命

一、四维立体监控网络技术架构 1. 人员行为监控 - 融合人脸识别、骨骼追踪与RFID工牌技术,身份识别准确率99.97% - 支持15米超距夜间红外监控(精度0.01lux) 2. 作业过程监控 - UWB厘米级定位技术(误差<0.3米&…

安全强化的Linux

SElinux简介 SELinux是security-Enhanced Linux的缩写,意思是安全强化的linux SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。传统的访问控制在我们开启权限后,系统进程可以直接访问 当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞 在…

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 K-me…

spring中yml配置上下文与tomcat等外部容器不一致问题

结论:外部优先级大于内部 在 application.yml 中配置了: server:port: 8080servlet:context-path: /demo这表示你的 Spring Boot 应用的上下文路径(context-path)是 /demo,即访问你的服务时,URL 必须以 /d…

论文研读——《AnomalyGPT:使用大型视觉语言模型检测工业异常》

这篇论文提出了 AnomalyGPT,一个基于大型视觉语言模型的工业异常检测框架,首次将通用多模态对话能力引入工业视觉场景,通过引入图像解码器增强像素级感知,设计 Prompt 学习器实现任务自适应控制,并利用合成异常样本解决…

供应链安全检测系列技术规范介绍之一|软件成分分析

软件成分分析的概念及意义 软件成分分析Software Compostition Analysis(SCA)是一种用于管理开源组件应用安全的方法。软件成分分析系统可以快速跟踪和分析应用软件的开源组件,发现相关组件、支持库以及它们之间直接和间接依赖关系&#xff0…

conda更换清华源

1、概览 anaconda更换速度更快、更稳定的下载源,在linux环境测试通过。 2、conda源查看 在修改之前可以查看下现有conda源是什么,查看conda配置信息,如下: cat ~/.condarc 可以看到你的conda源,以我的conda源举例&am…