[ 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获取环境变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值