进程管理5——环境变量

目录

环境变量基本概念

对于PATH的理解

 如何自己设置环境变量

main函数的参数

环境变量参数

如何获取环境变量

关于命令行参数


 

环境变量基本概念

环境变量是OS给我们提供的参数或者数据。

一些有关环境变量相关的操作:

①echo:显示某个环境变量的值

②set:显示本地定义的shell变量和环境变量

③env:显示所有的环境变量

④export:设置一个新的环境变量

⑤unset:清除环境变量

先用env命令查看一下有什么环境变量

常见的环境变量主要有三个

PATH:系统中命令的搜索路径

HOME 当前登录用户家目录

SHELL:bash所在的目录

对于PATH的理解

先观察一个现象:

 

执行一条程序的方法:既可以直接写出也可以带上路径+程序。那么为什么执行我自己的程序必须要带上路径呢?

执行系统命令可以不带路径,因为操作系统有一套规则,知道在哪里去寻找。系统的命令默认是可以被找到的。这些命令在环境变量中保存着。但是执行自定义程序的话,不带路径就无法运行了。

也就是说系统命令可以直接被运行,是因为在PATH路径中已经保存了对应的命令的搜索路径,我直接执行ls命令,系统默认就会去这些地方寻找,找到了就可以执行了。

$PATH我们来查看一下都有哪些路径。中间用;分割的就是不同的路径。

 如何自己设置环境变量

 

如果我想运行我自己的程序和运行系统中的程序一样,不带路径,我该怎么做呢?

1 由于我的程序不在系统默认的搜索路径中,我可以把我的程序放到对应的搜索路径中,但是这样相当于安装自己的程序到系统中,会污染OS的命令池。

2 重新设置PATH,将我的程序的路径放到PATH中,这样我每次执行自己的程序就不用带上路径了。他只在本次登陆中修改,下次登录PATH会复原的。

 

main函数的参数

int main(int argc, char *argv[], char*env[])

 其实main函数总共会传入三个参数。前两个叫做命令行参数,最后一个叫做环境变量参数。该参数可以将启动该进程的父进程传递给他的环境变量信息,传到这里。

环境变量参数

也就是说环境变量一般是由父进程导入的,最开始是bash提供的。bash的环境变量又是由操作系统提供的。也就是说操作系统提供的环境变量具有全局性,因为他可以被所有子进程继承,那么所有子进程都能拿到对应的环境变量。环境变量是系统的变量,可以帮我们做一些事情:可以帮我们找命令等。

环境变量是一个指针数组类型,数组中的每一个元素保存的就是环境变量对应的字符串。

环境变量被当成字符串,以指针数组的形式被保存和维护起来,以参数的形式传递给main。于是main在运行的时候就可以获取对应的环境变量了。

命令行中可以设置的两种变量:

局部变量 这是命令行独有的。直接设置就可以了。不过重启bash就没了。只在当前有效。

全局变量或者环境变量,所有共享的。可以通过export的命令来设置。 

如何获取环境变量

2 函数调用获取

 3 

第三方变量获取

name 所指向的环境字符串,并返回相关的值给字符串。该函数返回一个以 null 结尾的字符串,该字符串为被请求环境变量的值。如果该环境变量不存在,则返回 NULL。

 

 

 

关于命令行参数

Argc 在命令行参数中传了几个参数

Argv指针数组 char*类型的指针数组。和env类似的

命令行参数:在启动程序时传入的选项。

命令行参数的意义:同样的一个程序 ,通过选项的方式来选择使用同一个子程序的不同功能。选项底层是通过命令行参数获得的。比如我们日常带的ls -a这样的选项。这表示argv[1]的第一个位置是什么选项,如果有多个选项就依次再其后位置搜索。

命令行参数也是由bash传递给子进程的。和上述类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值