Linux学习之环境变量

环境变量

基本概念

  • 环境变量一般是指操作系统中用来指定操作系统运行环境的一些参数。
  • 比如,在C/C++编程中我们用动静态库的时候,我们只需用#include来链接并不需要提供库的文件地址,而在形成可执行程序时,照样可以链接成功,其实就是相关环境变量帮助编译器找到地址。
  • 在系统中,环境变量具有全局性。

查看环境变量的方法

echo $NAME //NAME:你需要查看的环境变量名。

常见的环境变量

PATH:指定命令的搜索路径。

在这里插入图片描述
可能有的朋友会不明白PATH这一串字符是什么意思,接下来我们用一个测试来了解PATH的含义。

PATH测试

我们知道ll和pwd等命令其实都是可执行程序,我们可以在任意路径下使用。
在这里插入图片描述

这是我们自己写的代码形成的可执行程序。
在这里插入图片描述
而我们不能用test1直接使用,报错找不到该命令;我们必须带上路径(./test1)才能使用。
在这里插入图片描述

这是为什么呢?明明都是可执行程序,为什么ls就能直接使用,而我们的程序就必须带上路径呢?

这就是PATH环境变量的作用了。

  • 首先,不论任何程序,你要运行它就必须要让操作系统知道可执行程序的文件路径。
  • 其次,我们再来看看PATH的内容就能理解了,其实它是由若干组路径(“ : ”作为分割符)组成的一个字符串,而这些路径就是系统中那些大佬写给我们使用的可执行文件路径。所以像ls和pwd等命令就不需要我们提供路径了。
    在这里插入图片描述
    在这里插入图片描述
  • 最后,可以将我们的可执行文件路径写入PATH变量中,这样我们也可以直接使用我们的可执行程序了。
    在这里插入图片描述
    在这里插入图片描述

HOME:指定用户的主工作目录

我们在登入时,总会在/home/用户名这样的文件下,这就是HOME的作用。(可以通过切换用户来测试)
在这里插入图片描述

SHELL:当前Shell

在这里插入图片描述

和环境变量有关的命令

  • echo:显示变量的值
    在这里插入图片描述

  • env:显示所有的环境变量
    在这里插入图片描述

  • export:设置一个新的环境变量
    在这里插入图片描述
    我们可以看到在导入myvalue之前是没有这个值的,在export后就可以发现myvalue确实添加到环境变量中了。

  • unset:删除指定的shell变量或函数
    在这里插入图片描述

  • set:显示本地的shell变量和环境变量

在这里插入图片描述
因为太多了就不全部展示了。

环境变量的组织方式

环境变量由谁来管理呢?那肯定是我们的OS了,一提到管理就会想到**“先描述,再组织”**,这里我们来讲讲环境变量的组织方式。
在这里插入图片描述

环境变量的组织方式就是我们熟知的字符指针数组,也叫做环境表,数组中每一个指针都指向一个字符串。

通过代码来获得环境变量

  • 命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
 int i = 0;
 while(env[i] != NULL){
 printf("%s\n", env[i]);
 i++;
 }
 return 0;
}

在这里插入图片描述
我们来看结果是不是和env一模一样。

  • 通过第三方变量environ获取
#include<stdio.h>

int main()
{
	extern char** environ;
	int i=0;
	while(environ[i]){
		printf("%s\n",environ[i]);
		i++;
	}
	return 0;
}

在这里插入图片描述
lib中定义environ变量指向环境表且没有包含在头文件中,只需extern声明变量。

通过函数来获得环境变量

  • putenv
  • getenv

先讲解getenv的使用(获得特定环境变量的值)
在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>

int main()
{
	printf("%s\n",getenv("PATH"));
	return 0;
}

在这里插入图片描述
和echo打印的PATH值一致。

环境变量具有全局性

因为每个main函数都可以通过第三个命令行参数获得环境表的指针,所以环境变量具有全局性。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值