【Linux】环境变量
程序员文章站
2022-04-29 23:33:45
...
基本概念
环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
常见环境变量
- PATH:指定命令的搜索路径
- HOME:指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)
- HISTSIZE:指保存历史命令记录的条数
- SHELL:当前shell,它的值通常为/bin/bash.
常见环境变量相关命令
- echo:显示某个环境变量值
- export:设置一个新的环境变量
- env:显示所有环境变量
- unset:清除所有环境变量
- set:显示本地定义的shell变量和环境变量
环境变量的组织方式
如何获取环境变量
- 命令行第三个参数
4 int main(int argc,char *argv[],char *env[])
5 {
6 int i=0;
7 for(;env[i];i++)
8 {
9 printf("%s\n",env[i]);
10 }
11 return 0;
12
13 }
- 通过第三方变量environ获取
4 int main(int argc,char *argv[])
5 {
6 extern char **environ;
7 int i=0;
8 for(;environ[i];i++)
9 {
10 printf("%s\n",environ[i]);
11 }
12 return 0;
13
14 }
- 通过系统调用获取或设置环境变量
常用getenv和putenv函数来访问特定的环境变量
char *getenv(const char *name);
int putenv(char *string);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
putenv(): _SVID_SOURCE || _XOPEN_SOURCE
例:
3 int main(int argc,char *argv[],char *env[])
4 {
5 printf("%s\n",getenv("PATH"));
6 return 0;
7
8 }
环境变量具有全局属性
4 int main()
5 {
6 char *env=getenv("MYENV");
7 if(env)
8 {
9 printf("%s\n",env);
10 }
11 return 0;
12
13 }
直接运行时,没有结果出现,说明该环境变量根本不存在,导出环境变量:export MYENV=”hello world”后,再次运行,有了结果。说明:环境变量可以被子进程继承的。
环境变量是继承的,但是,需要先把一个变量export为环境变量。否则,这个变量只是一个普通变量,并不在env数组中,就不是环境变量。