环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
常见环境变量
PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录 ( 即用户登陆到 Linux 系统中时 , 默认的目录 )SHELL : 当前 Shell, 它的值通常是 /bin/bash 。
查看环境变量的方法
echo $NAME //NAME: 你的环境变量名称
了解环境变量
我们发现,像ls ll pwd这样的命令可以直接运行,但是像我们的myproc这样的程序却不能运行,那是因为像ls,ll,pwd这样的命令,所处的路径在环境变量中,但像myproc所处的路径不在环境变量中,所以导致了运行的时候在环境变量中找不到对应的路径,才没办法运行。
如何设置环境变量呢
1.将要执行的程序的路径导入 /usr/bin路径下,但是这种方法不推荐,因为会污染原有的命令。
2.通过export导入环境变量
我们可以看到,此时不用带./也可以执行了
当我们关闭当前会话后,会发现该路径又没有了,所以我们就不必担心会污染原有的命令了!
和环境变量相关的命令
1. echo: 显示某个环境变量值2. export: 设置一个新的环境变量3. env: 显示所有环境变量4. unset: 清除环境变量5. set: 显示本地定义的 shell 变量和环境变量
env:
环境变量得组织方式
通过代码如何获取环境变量
1.命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[]){int i = 0;for(; env[i]; i++){printf("%s\n", env[i]);}return 0;}
2.通过第三方变量environ获取
libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明。
#include <stdio.h>int main(int argc, char *argv[]){extern char **environ;int i = 0;for(; environ[i]; i++){printf("%s\n", environ[i]);}return 0;}
通过系统调用或设置环境变量
1.getenv()
2.putenv()
环境变量通常是具有全局属性的
环境变量通常具有全局属性,可以被子进程继承下去。
直接查看,发现没有结果,说明该环境变量根本不存在
导出环境变量 export MYENV="hello world"
#include <stdio.h>
#include <stdlib.h>
int main()
{char * env = getenv("MYENV");if(env){printf("%s\n", env);}return 0;
}
再次运行程序,发现结果有了!说明:环境变量是可以被子进程继承下去的!
如果只进行 MYENV=“helloworld” ,不调用export导出,那么运行程序会发现没有看到MYENV