【Linux学习】环境变量

(4) 2024-05-22 12:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说【Linux学习】环境变量,希望能够帮助你!!!。

目录

  • 一、环境变量的概念
    • 1. 环境变量的含义
    • 2. 环境变量的分类
    • 3. 环境变量的组织方式
  • 二、常见的环境变量
  • 三、获取或设置环境变量
    • 1. 通过命令获取或设置环境变量
    • 2. 通过代码获取环境变量
    • 3. 通过系统调用获取或修改环境变量

一、环境变量的概念

1. 环境变量的含义

环境变量一般是指操作系统中指定运行环境的一些参数,即系统预定义的参数它相当于一个指针,想要查看变量的值,需要加上“$”符号
环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便运行在shell上的程序和脚本访问。这些数据可以是用来识别用户、系统、Shell的特性以及任何其它需要存储的数据。

2. 环境变量的分类

  1. 按作用的范围分类

在Linux中的变量,可以分为环境变量和本地变量:

环境变量:相当于全局变量,存在于所有的Shell中,具有继承性
本地变量:相当于局部变量,只存在于当前Shell中,本地变量包含环境变量,但非环境变量不具有继承性

  1. 按生存周期分类

永久性环境变量:需要修改配置文件,变量永久生效
暂时性环境变量:使用export定义,关闭Shell后失效

3. 环境变量的组织方式

【Linux学习】环境变量_https://bianchenghao6.com/blog__第1张

每个程序都有一张环境表,环境表是一个字符指针数组,每个指针指向一个以 “\0” 结尾的环境字符串。main函数的第三个参数就是环境表的地址

二、常见的环境变量

  1. PATH
    PATH变量指定命令的搜索路径。
    例如:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第2张

从中可以看出,在当前目录下,PATH的值。它表示在当前目录下执行的每一条指令的搜索路径,每个目录以冒号隔开。当执行一条指令时,系统就会从系统文件中去寻找,找到了就执行;否则不执行。

  1. HOME
    该变量指定用户的主工作目录,即用户登录到Linux系统时,默认的目录。
  • 普通用户下的工作目录
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第3张

  • 超级用户下的工作目录
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第4张

因此我们可以得出一个结论:环境变量是一个变量,它的值随着用户的不同而变化。

  1. HISTSIZE
    该变量查看Linux系统保存历史命令的数目。
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第5张
    说明当前Linux系统中最多保存10000条历史命令。

  2. LOGNAME
    该变量指定显示当前的用户名。
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第6张

  3. HOSTNAME
    该变量显示当前主机名称。
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第7张

  4. SHELL
    该变量显示用户当前使用的解析器。
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第8张

三、获取或设置环境变量

1. 通过命令获取或设置环境变量

  1. echo
    该命令用于显示某个环境变量的值。
    格式:

echo $【变量名】

  1. env
    该命令显示所有的环境变量。
    例如:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第9张
  2. set
    set命令显示本地定义的shell变量和环境变量。
    例如:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第10张
  3. export
    export命令指定设置一个新的环境变量。
  • 查看不存在的环境变量:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第11张
  • 使用export创建一个新的环境变量:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第12张
    【注意】使用export定义的环境变量是暂时性环境变量,关闭Shell后失效。
  1. unset
    unset 命令功能是清除指定的环境变量。
    例如:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第13张

  2. readonly
    该命令用于设置只读的环境变量。
    例如:
    【Linux学习】环境变量_https://bianchenghao6.com/blog__第14张
    【注意】将环境变量设置为只读模式后,就不能对其进行修改或者删除操作,只有直到用户退出之后才会失效。

2. 通过代码获取环境变量

  1. 通过main函数的第三个参数,环境表地址数组指针获取环境变量。
    代码如下:
#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;
}

结果:
【Linux学习】环境变量_https://bianchenghao6.com/blog__第15张
【注意】main函数的三个参数分别是:

  • 第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。
  • 第二个参数:argv是个字符指针的数组,每一个元素一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
  • 第三个参数:envp是字符指针的数组,数组的每一个原元素是一个指向一个环境变量(字符串)的字符指针。
  1. 通过第三方变量environ获取环境变量
    代码如下:
#include<stdio.h>

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

结果:
【Linux学习】环境变量_https://bianchenghao6.com/blog__第16张

3. 通过系统调用获取或修改环境变量

通常用getenv和putenv函数来访问特定的环境变量,而不是用environ变量。但是,如果要查看整个环境,则必须使用environ指针。
例子如下:

#include<stdio.h>
#include<stdlib.h> 
int main()
{ 
   
    char *env = getenv("MY_ENV");
    
    printf("%s\n", env);
    return 0;
}

【Linux学习】环境变量_https://bianchenghao6.com/blog__第17张

通过代码执行的结果可以得知:利用 " export MY_ENV=200 ",导出的环境变量可以被继承下去;而 " MY_ENV=100 ",导出的本地变量不具有继承性。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复