1、
env
:查看所有环境变量
2、
echo $PATH
:查看PATH下的环境变量
问:为什么运行我们生成的test可执行文件需要
./test
,但是运行ls
等命令就可以直接用呢?
答:不指定路径,系统会在PATH里的路径里找,PATH:辅助系统进行指令查找
PATH=$PATH:/home/xupeng/101/lesson10:将/home/xupeng/101/lesson10添加到环境变量;这样运行就可以不用带./
指定当前路径了(这种设置是一次性的,重启失效,想永久,必须更改.bash_profile文件)
(PATH不小心被自己清空后,关机重登就可以,PATH是个变量,他是被系统开启时赋值的)
1、getenv:C语言获取环境变量
3 #include "stdlib.h"
4
7 int main() {
8
9 printf("%s\n", getenv("PATH"));
10 printf("%s\n", getenv("HOME"));
11 return 0;
19 }
MY_ENV="hello env"
设置本地变量;export MY_ENV
导为全局变量后可以被别的进程获取到
[xupeng@VM-4-13-centos lesson10]$ MY_ENV="hello env"
[xupeng@VM-4-13-centos lesson10]$ echo $MY_ENV
hello env
[xupeng@VM-4-13-centos lesson10]$ export MY_ENV
[xupeng@VM-4-13-centos lesson10]$ vim proc.c
[xupeng@VM-4-13-centos lesson10]$ make
gcc proc.c -o proc
[xupeng@VM-4-13-centos lesson10]$ ./proc
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xupeng/.local/bin:/home/xupeng/bin:/home/xupeng/101/lesson10
/home/xupeng
hello env
[xupeng@VM-4-13-centos lesson10]$
2、环保变量相关命令
env只可以显示环境变量,set可以显示环境变量和本地变量
3、环境变量的组织方式
main函数的参数:argc、argv[]
命令行操作demo:
6 void Usage(char *msg) {
7 printf("Usage : %s -[a|s] x y\n", msg);
8 }
9
12 int main(int argc, char *argv[])
13 {
14 if (argc != 4) {
15 Usage(argv[0]);
16 return 1;
17 }
18
19 int x = atoi(argv[2]);
20 int y = atoi(argv[3]);
21
22 if (strcmp(argv[1], "-a") == 0) {
23 printf("%d + %d = %d\n", x, y, x+y);
24 } else if(strcmp(argv[1], "-s") == 0) {
25 printf("%d - %d = %d\n", x, y, x- y);
26 }
27
28 return 0;
29 }
main函数的参数:env[]
由此可知geten()函数就是通过env[]来获得环境变量的
C代码获取环境变量:
#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;
}
通过environ获取环境变量:
#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;
}