liunx环境变量学习总结

环境变量

在操作系统中,环境变量是一种特殊的变量,它们为运行的进程提供全局配置信息和系统环境设定。本文将介绍如何自定义、删除环境变量,特别是对重要环境变量PATH的管理和定制,以及与环境变量相关的函数使用。

自定义环境变量

要创建一个自定义环境变量,您可以在终端中输入以下格式的命令:

key=value

然而,以这种方式设置的环境变量仅在当前终端会话中有效,且不会被子进程继承。若希望环境变量能在当前终端及其所有子进程中生效,并能在环境变量列表中查看到,应使用 export 命令:

export key=value

 删除环境变量

要删除已存在的环境变量,可使用 unset 命令:

unset key

执行此命令后,指定的环境变量 key 将从当前终端会话及其子进程中移除 

path环境变量

PATH 是一个极为重要的环境变量,它定义了系统在执行命令时查找可执行文件的目录列表。其典型格式如下:

PATH=/usr/local/cuda/bin:/home/zlzg01/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

当在 Bash 终端下输入一个命令(如 cdlspwd 等),系统会按照 PATH 中列出的路径顺序进行搜索,一旦在某个路径下找到对应命令的可执行文件,便会立即执行。若遍历完所有路径仍未找到,则会返回“命令未找到”(command not found)的错误。

修改 PATH 变量 

若需临时向当前终端的 PATH 添加一个路径,可使用以下命令:

PATH=$PATH:/home/test/demo

这将把 /home/test/demo 添加到现有 PATH 的末尾,但此更改仅限于当前终端会话,关闭终端后设置即失效。

若要在所有新的 Bash 会话中持久地添加路径,需要编辑用户主目录下的 ~/.bashrc 文件(对于其他 shell,可能是 ~/.zshrc~/.bash_profile 等)。打开该文件,添加如下行并保存:

export PATH=$PATH:/home/test/demo

每当启动一个新的 Bash 进程时,系统会自动执行 ~/.bashrc 中的指令,确保新添加的路径始终包含在 PATH 中 

与环境变量相关的函数

以下是与环境变量操作相关的常用函数:

  • getenv(): 用于获取指定环境变量的值。例如,在 C 语言程序中,可以使用 char *value = getenv("key"); 获取 key 环境变量的值。

  • putenv(): 修改或添加环境变量。在 C 语言中,调用 putenv("key=value"); 即可设置一个环境变量。请注意,putenv() 不接受空值,若要删除变量,请使用 unsetenv()

  • setenv(): 类似于 putenv(), 但在某些实现中提供了更多功能,如允许指定环境变量值是否可以为空。使用示例:setenv("key", "value", 1); 第三个参数表示是否允许重写已存在同名变量的值。

  • unsetenv(): 删除指定环境变量。例如,在 C 程序中使用 unsetenv("key"); 来移除 key 环境变量。

  • clearenv(): 清除当前进程的所有环境变量。这是一个全局操作,慎用。在 C 语言中,调用 clearenv(); 即可。

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

void printEnv(){
    extern char** environ;
    for (char** pp=environ;*pp;pp++){
    	printf("%s\n",*pp);
    }


}
int main(){
    printf("%s\n",getenv("PATH"));
    putenv("test=demo");
    setenv(const char *key,const char *value,int overwrite);//作用同putenv,单overwrite值为0时,不改变原有值,反之修改原有值
    printEnv();

    return 0;
}

相关推荐

  1. linux学习linux下添加环境变量的方法

    2024-04-10 08:20:02       55 阅读
  2. linux设置环境变量

    2024-04-10 08:20:02       58 阅读
  3. Linux环境变量

    2024-04-10 08:20:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 08:20:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 08:20:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 08:20:02       87 阅读
  4. Python语言-面向对象

    2024-04-10 08:20:02       96 阅读

热门阅读

  1. 自我介绍的HTML 页面(入门)

    2024-04-10 08:20:02       39 阅读
  2. C++之std::initializer_list详解

    2024-04-10 08:20:02       39 阅读
  3. ChatGPT革新学术论文写作:超越传统写作模式

    2024-04-10 08:20:02       38 阅读
  4. Python爬取天气信息,并进行语音播报

    2024-04-10 08:20:02       38 阅读
  5. TypeScript中的“as”语法是什么?

    2024-04-10 08:20:02       33 阅读
  6. SSH和交换机端口安全概述

    2024-04-10 08:20:02       38 阅读
  7. Hive某字段空值用同组该字段非空值填充

    2024-04-10 08:20:02       40 阅读
  8. Flink Get Start MVN 命令执行报错

    2024-04-10 08:20:02       39 阅读
  9. HiveQL-DDL总览

    2024-04-10 08:20:02       27 阅读
  10. flinksql

    2024-04-10 08:20:02       36 阅读
  11. SpringBoot使用Zxing生成二维码

    2024-04-10 08:20:02       34 阅读