Linux环境变量

Linux环境变量

1、什么是环境变量

​ 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置、系统文件夹位置等。

​ 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如操作系统中的path环境变量【配过Windows环境变量对path应该很熟悉了】,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行程序。

2、环境变量的主要作用:
设置程序的运行参数:

​ 环境变量相当于给系统或用户给应用程序设置的一些参数,具体起什么作用这当然和具体的环境变量相关,例如一个程序在运行时默认该使用什么语言,界面的大小,日志文件存储在什么位置,临时文件存储在什么位置,都需要通过查询操作系统的环境变量才能确定。

程序共用:

​ 当软件A需要使用到软件B中部分功能时,但无论是操作系统还是软件A、B的作者都无法控制软件安装在什么位置,这时就可以让软件B设置环境变量告诉操作系统它安装在了哪个位置,而软件A就可以通过查询环境变量知道软件B安装在什么地方,从而调用软件B的功能。

系统运行:

​ 用户还可以通过设置环境变量告诉操作系统一些运行参数,如设置当前系统的语言、字符编码、终端的默认大小等。

常见的环境变量:
PS1				# 命令提示符
PATH			# 命令的搜索路径
C_INCLUDE_PATH	# 头文件的搜索路径
LIBRARY_PATH	# 编译时,连接库文件的搜索路径
LD_LIBRARY_PATH	# 程序执行时动态库的搜索路径
3、设置环境变量:
查看环境变量:

​ 1、Linux系统使用env命令查看环境变量

​ 2、Windows系统使用set命令查看环境变量

​ 3、在程序中查看

#include <stdio.h>
// 程序在运行时父进程都会通过main函数参数传递一份环境变量表的拷贝,是一个以NULL指针结尾的字符指针数组。
int main(int argc,const char* argv[],char* environ[])
{
    for(int i=0; environ[i]; i++)
    {   
        printf("%s\n",environ[i]);
    }   
}
通过修改配置文件设置:
1、Linux系统的修改方法
# 打开配置文件:
vi ~/.bashrc			# 只对当前用户用效
vi /etc/environment		# 对所有用户有效 编辑需要管理员权限

# 在文件末尾添加内容:
export C_INCLUDE_PATH=<环境变量的内容>
C_INCLUDE_PATH=$C_INCLUDE_PATH:<追加新的内容>
	
# 需要重新加载配置文件:
source ~/.bashrc
2、Windows系统的修改方法

Windows10系统修改环境变量的方法

Windows11系统修改环境变量的方法

使用标准库函数设置环境变量:
环境变量和格式:name=value

// 根据name获得value
char *getenv(const char *name);

// 以name=value的形式设置环境变量,name不存在就添加,存在就覆盖其value
int putenv(char *string);

// 根据name设置value,注意最后一个参数表示,若name已不存在则添加,如果name已经存在是否覆盖其value由overwrite控制
// If name does exist in the  environment, then its value is changed to value if overwrite is nonzero; if overwrite is zero, then the value of name is not changed。非0更改
int setenv(const char *name, const char *value, int overwrite);

// 删除环境变量。
int unsetenv(const char *name);

// 清空环境变量,environ==NULL。
int clearenv(void);

注意:由于当前程序获得是环境变量表的拷贝(副本), 因此在当前程序中对环境变量表进行增、删、改不会影响其它程序和操作系统,而修改后环境变量表会传给它的子进程,也就是会对子进程造成影响。
4、错误处理
(1)通过函数的返回值表示错误:

例如main函数:0成功,1异常,-1错误

还有自定义函数

(2)通过errno表示错误:

​ errno 是记录系统的最后一次错误代码。代码是一个int型的值,在errno.h中定义。查看错误代码errno是调试程序的一个重要方法。

​ 当调用Linux系统API函数发生异常时,一般会将errno变量赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招能解决不少原本看来莫名其妙的问题。

​ errno在函数执行成功的情况下不会被修改,因此不能以errno非零,作为发生错误判断依据, errno是一个全局变量,其值随时可能发生变化,所以要配合函数的返回值来使用errno。

#include <stdio.h>
#include <errno.h>

int main () 
{
	FILE* fp = fopen ("none", "r");
	if (NULL == fp) 
	{
        // 查看错误编号
		printf ("fopen: %d\n", errno);
        // 根据错误编号查看错误提示
		printf ("fopen: %s\n", strerror (errno));
        // 自动根据错误编号查看错误提示
		printf ("fopen: %m\n");
        // 自动根据错误编号查看错误提示
		perror ("fopen");
		return -1;
	}
	fclose (fp);
	return 0;
}
/*
fopen: 2
fopen: No such file or directory
fopen: No such file or directory
fopen: No such file or directory
*/

注意:使用系统API(系统函数)的返回值来判断函数执行是否出错,使用errno机制来获取错误原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值