【Linux学习】环境变量

简介: 【Linux学习】环境变量

一、环境变量的概念

1. 环境变量的含义

环境变量一般是指操作系统中指定运行环境的一些参数,即系统预定义的参数。它相当于一个指针,想要查看变量的值,需要加上“$”符号。

环境变量是bash shell的特性,用来存储有关shell会话和工作环境的信息。允许在内存中存储数据,以便运行在shell上的程序和脚本访问。这些数据可以是用来识别用户、系统、Shell的特性以及任何其它需要存储的数据。

2. 环境变量的分类

  1. 按作用的范围分类

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

环境变量:相当于全局变量,存在于所有的Shell中,具有继承性

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


2.按生存周期分类

永久性环境变量:需要修改配置文件,变量永久生效

暂时性环境变量:使用export定义,关闭Shell后失效

3. 环境变量的组织方式

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


二、常见的环境变量

  1. PATH
    PATH变量指定命令的搜索路径。
    例如:

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

  1. HOME
    该变量指定用户的主工作目录,即用户登录到Linux系统时,默认的目录。
  • 普通用户下的工作目录

  • 超级用户下的工作目录

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

  1. HISTSIZE
    该变量查看Linux系统保存历史命令的数目。

    说明当前Linux系统中最多保存10000条历史命令。
  2. LOGNAME
    该变量指定显示当前的用户名。

  3. HOSTNAME
    该变量显示当前主机名称。


6.SHELL
该变量显示用户当前使用的解析器。

三、获取或设置环境变量

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

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

echo $【变量名】

  1. env
    该命令显示所有的环境变量。
    例如:
  2. set
    set命令显示本地定义的shell变量和环境变量。
    例如:
  3. export
    export命令指定设置一个新的环境变量。
  • 查看不存在的环境变量:
  • 使用export创建一个新的环境变量:

    【注意】使用export定义的环境变量是暂时性环境变量,关闭Shell后失效。
  1. unset
    unset 命令功能是清除指定的环境变量。
    例如:

  2. readonly
    该命令用于设置只读的环境变量。
    例如:

    【注意】将环境变量设置为只读模式后,就不能对其进行修改或者删除操作,只有直到用户退出之后才会失效。


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;
}

结果:

【注意】main函数的三个参数分别是:

  • 第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。
  • 第二个参数:argv是个字符指针的数组,每一个元素一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)。
  • 第三个参数:envp是字符指针的数组,数组的每一个原元素是一个指向一个环境变量(字符串)的字符指针。

2.通过第三方变量environ获取环境变量

  1. 代码如下:
#include<stdio.h>
int main()
{
    extern char **environ;
    int i = 0;
    for(; environ[i]; ++i)
    {
        printf("%s\n", environ[i]);
    }
    return 0;
}


结果:

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

通常用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 ",导出的本地变量不具有继承性。

目录
相关文章
|
12天前
|
存储 Linux
Linux的学习之路:16、文件(3)
Linux的学习之路:16、文件(3)
23 0
|
12天前
|
Linux C语言 C++
Linux的学习之路:14、文件(1)
Linux的学习之路:14、文件(1)
22 0
|
3天前
|
Shell Linux C++
【Linux】关于环境变量——你需要知道这些原理&指令
【Linux】关于环境变量——你需要知道这些原理&指令
|
3天前
|
Shell Linux 开发工具
【Linux】初学者需要知道的三个环境变量实验
【Linux】初学者需要知道的三个环境变量实验
|
3天前
|
Shell Linux 开发工具
【Linux】环境变量常见指令操作&基本实验(入门必看!)
【Linux】环境变量常见指令操作&基本实验(入门必看!)
|
4天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
8 0
|
5天前
|
编解码 Linux 数据安全/隐私保护
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
【Linux学习】​​学习Linux的准备工作和Linux的基本指令
|
5天前
|
Linux Shell 虚拟化
【Linux学习】Linux 的虚拟化和容器化技术
【Linux学习】Linux 的虚拟化和容器化技术
|
6天前
|
存储 Linux 数据库连接
【专栏】如何在 Linux 系统中使用 envsubst 命令替换环境变量?
【4月更文挑战第28天】`envsubst` 是 Linux 中用于替换文本中环境变量值的工具。它遍历文本,将环境变量替换为实际值。要使用它,首先可能需要安装相应软件包。基本用法是 `envsubst &lt; input.txt &gt; output.txt`,将输入文件的环境变量替换后输出到输出文件。命令还支持选项如 `-e` 和 `-d`。实例包括:配置文件替换、脚本执行中的环境变量替换和动态生成文件。掌握 `envsubst` 可提升在 Linux 系统中处理环境变量的效率。
|
11天前
|
Shell Linux 程序员
【linux进程(六)】环境变量再理解&程序地址空间初认识
【linux进程(六)】环境变量再理解&程序地址空间初认识