Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说【Linux学习】环境变量,希望能够帮助你!!!。
环境变量一般是指操作系统中指定运行环境的一些参数,即系统预定义的参数。它相当于一个指针,想要查看变量的值,需要加上“$”符号。
环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便运行在shell上的程序和脚本访问。这些数据可以是用来识别用户、系统、Shell的特性以及任何其它需要存储的数据。
在Linux中的变量,可以分为环境变量和本地变量:
环境变量:相当于全局变量,存在于所有的Shell中,具有继承性
本地变量:相当于局部变量,只存在于当前Shell中,本地变量包含环境变量,但非环境变量不具有继承性
永久性环境变量:需要修改配置文件,变量永久生效
暂时性环境变量:使用export定义,关闭Shell后失效
每个程序都有一张环境表,环境表是一个字符指针数组,每个指针指向一个以 “\0” 结尾的环境字符串。main函数的第三个参数就是环境表的地址。
从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。
普通用户下的工作目录
超级用户下的工作目录
因此我们可以得出一个结论:环境变量是一个变量,它的值随着用户的不同而变化。
HISTSIZE
该变量查看Linux系统保存历史命令的数目。
说明当前Linux系统中最多保存10000条历史命令。
LOGNAME
该变量指定显示当前的用户名。
HOSTNAME
该变量显示当前主机名称。
SHELL
该变量显示用户当前使用的解析器。
echo $【变量名】
unset
unset 命令功能是清除指定的环境变量。
例如:
readonly
该命令用于设置只读的环境变量。
例如:
【注意】将环境变量设置为只读模式后,就不能对其进行修改或者删除操作,只有直到用户退出之后才会失效。
#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;
}
结果:
【注意】main函数的三个参数分别是:
#include<stdio.h>
int main()
{
extern char **environ;
int i = 0;
for(; environ[i]; ++i)
{
printf("%s\n", environ[i]);
}
return 0;
}
结果:
通常用getenv和putenv函数来访问特定的环境变量,而不是用environ变量。但是,如果要查看整个环境,则必须使用environ指针。
例子如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *env = getenv("MY_ENV");
printf("%s\n", env);
return 0;
}
通过代码执行的结果可以得知:利用 " export MY_ENV=200 ",导出的环境变量可以被继承下去;而 " MY_ENV=100 ",导出的本地变量不具有继承性。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章