目录
命令行参数
命令行参数列表:
如何实现命令行参数传递到此进程
环境变量
基本概念
常见环境变量
查看环境变量方法
编辑
环境变量如何写入
总结:
测试PATH
命令行参数
同一个程序,可以根据命令行参数的不同,表现不同功能
比如:指令中的选项的实现. ls -al
命令行参数列表:
argc: 参数的个数
argv[]: 参数清单
运行结果
上面的执行结果根据输入的参数不同,执行结果不同
类似 命令行执行 ls 和ls -al的结果不同
如何实现命令行参数传递到此进程
例如在命令行中输入
ls -al
此时父进程是shell ,shell拿到了字符串 ,按照空格打散 ,形成argc和argv[ ]
子进程与父进程,代码共用一份,数据各自私有.对于只读的数据 , 子进程可以看到(包含了argc,argv)
总结:通过此进程的父进程拿到命令行参数列表
环境变量
main()函数的命令行参数不止有两个,还有后面的env[ ],也叫环境变量
1 #include<stdio.h>
2 #include<unistd.h>
3
4 int main(int argc, char *argv[], char *env[])
5 {
6 printf("我是一个进程,我的pid: %d\n", getpid());
7 for(int i=0; env[i]; i++ )
8 {
9 printf("env[%d]: %s\n", i, env[i]);
10 }
11 return 0;
12 }
运行结果,如下
基本概念
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
环境变量是系统的配置文件
环境变量可以理解 OS为了使函数能获取全部的当前环境信息, 从而正常运行 创建的.
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性
常见环境变量
- PATH : 路径集合(指定命令的搜索路径集合)
- HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
- SHELL : 当前Shell,它的值通常是/bin/bash。
查看环境变量方法
echo $NAME //NAME:你的环境变量名称
上图就是命令行中指定命令的搜索路径,
我们启动自己写的程序需要输入
./myprocess
如果不带 ./ 就显示没有此命令, 就是因为环境变量PATH中没有我们程序的路径
环境变量如何写入
环境变量最初来自系统的配置文件(.bash_profile 和.bashrc), 系统的配置文件在磁盘中
所以环境变量是内存级文件,重启xshell就会从系统的配置文件中重新加载
总结:
- 环境变量可以理解 OS为了使函数能获取全部的当前环境信息, 从而正常运行 创建的,用于补全当前环境信息.
- 环境变量是内存级文件,重启xshell就会从系统的配置文件中重新加载
测试PATH
1. 创建hello.c文件
2. 对比./hello执行和之间hello执行
3. 为什么有些指令可以直接执行,不需要带路径,而我们的二进制程序需要带路径才能执行?
4. 将我们的程序所在路径加入环境变量PATH当中, export PATH=$PATH:hello程序所在路径
5. 对比测试
6. 还有什么方法可以不用带路径,直接就可以运行呢