目录
1、什么是环境变量?
1)PATH环境变量
2)怎么查看所有的环境变量?
2、什么是命令行参数?
3、什么是本地变量和内建命令?
1、什么是环境变量?
环境变量是系统提供的多组name = value的形式的变量,不同的环境变量有不同的用户,通常具有全局属性。
1)PATH环境变量
为什么我们平时./运行我们的程序时,需要在该程序所在的目录下才能运行,而想ls这样的指令程序却可以在任何路径下执行呢?
这是因为在系统中存在环境变量PATH,保存了一系列路径
系统在执行ls命令时,会到PATH环境变量中的每个路径去找ls程序,然后再执行。
怎么新增?
PATH = $PATH:要新增的路径(注意path=是覆盖式的)
2)怎么查看所有的环境变量?
方法一:指令env
通过env指令可以查看当前进程从系统继承下来的所有环境变量。
HISTSIZE:历史命令被记录的条数。
方法二:系统调用getenv获取指定的一个环境变量
h
2、什么是命令行参数?
int mian(int argc,char* argv[]) { }
main函数也是函数,是可以被传入参数的。
argc表示参数个数,argv是参数数组,保存以空格分隔的字符串参数。
当我们在命令行中输入“./mycmd -a -b”时,实际会给argc传入以空格分隔的字符串个数,再给argv传入以空格分隔的字符串。
以“./mycmd -a -b”为例,argc=3 ,argv[0] = "./mycmd",argv[1] = "-a",argv[2] = "-b"
其实除了上面两个参数,main函数还有一个参数env
argv:命令行参数表
env:环境变量表
运行下面的程序,也可以打印出所有的环境变量。
子进程会继承父进程的所有环境变量,所以说环境变量具有全局属性。
3、什么是本地变量和内建命令?
本地变量:只在本bash内有效,不会被子进程继承。
那为什么(echo $本地变量名) ,echo自己不用创建子进程吗,为什么它可以获取本地变量?其实echo命令是内建命令,它不需要创建子进程,是由自己亲自执行的,类似调用函数。