Linux 环境变量

环境变量概念

定义 :环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。

个人理解:Linux下一切皆文件,在Linux中所用的指令其实都是一个个可执行文件,例如ls
指令,他的路径为 /bin/ls , 用户直接输入ls即可运行该文件, 那么为什么用户自己用代码编写生产的可执行文件,要用路径/文件名的格式才能执行,而像 ls 这样的指令不需要呢? 因为系统的环境变量,为 ls提供了运行环境的参数,或者说帮助该指令查到了其可执行文件所在的位置 。

常见的环境变量有:
PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash。

在这里插入图片描述

! : 环境变是一个 KET=VALUE 形式的键值对 ;

查看环境变量

指令:

  1. echo: 显示某个环境变量值($代表后面的字符串是个变量名)
echo $KEY 
  1. env: 显示所有环境变量
  2. set: 显示本地定义的shell变量和环境变量

设置环境变量

  1. export: 设置一个新的环境变量
export KET=VALUE 
  1. unset: 清除环境变量
  2. putenv (在C代码中执行的函数)
`int putenv(char *string);`
#include <stdio.h>
#include <stdlib.h>

int main() {
   
    if (putenv("MYVAR=Hello") == 0) // 环境变是一个 `KET=VALUE` 形式的键值对
    {
   
        printf("Environment variable set successfully\n");
    } else 
    {
   
        printf("Failed to set environment variable\n");
    }
    return 0;
}
  1. 通过配置文件设置永久生效的环境变量

前面的环境变量设置方法,在重启xshell以后会失效,将环境变量添加到~/.bashrc~/.bash_profile文件中,这样每次登录时都会加载这些环境变量。因为除非自己手动删除否则永久生效,所以要谨慎配置。

进入配置文件

vi ~/.bashrc

在文件末尾添加:

export 变量名=变量值

例如:

export MY_VAR=hello

保存并退出文件,然后执行以下命令使其生效:

source ~/.bashrc

这样,每次登录时都会自动加载这些环境变量。

代码获取环境变量

  1. 通过main函数参数获取
#include <stdio.h>

int main(int argc, char *argv[], char *env[]) // env即环境表,环境表在补充说明部分有;
{
   
 int i = 0;
 for(; env[i]; i++){
   
 printf("%s\n", env[i]);
 }
 return 0;
}`
  1. 通过getenv函数获取
int putenv(char *string);

示例:

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

int main() {
   
    char *path = getenv("PATH");// PATH 为输入的KEY,返回值为VALUE
    if (path != NULL) {
   
        printf("PATH: %s\n", path);
    } else {
   
        printf("PATH not found\n");
    }
    return 0;
}
  1. 通过第三方变量environ获取

在Linux中,environ是一个指向环境变量的指针数组。它是一个全局变量,存储了当前进程的环境变量信息(环境表,见补充说明部分)。环境变量是一些在操作系统中设置的键值对,用于存储各种配置信息和运行时参数。例如,PATH环境变量用于指定可执行程序的搜索路径。environ指针数组中的每个元素都指向一个以 key=value 格式表示的环境变量字符串。数组的最后一个元素是一个空指针,用于表示数组的结束。通过遍历environ数组,可以获取当前进程的所有环境变量及其对应的值。

#include <stdio.h>

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

i

补充说明

  1. 每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。

在这里插入图片描述

  1. 在终端执行export MYENV="hello world“ 和 直接执行 MYENV="hello world“ 的区别

export命令用于将普通变量设置为环境变量,环境变量具有全局属性,可以在当前会话中的所有子进程中访问到。而直接执行变量赋值语句设置普通变量,如MYENV=“hello world”,则只在当前shell进程中有效,不会被子进程继承。

  1. 由于环境变量的全局属性,父进程的环境变量可以被子进程继承 。

相关推荐

  1. linux设置环境变量

    2023-12-06 20:24:04       58 阅读
  2. Linux环境变量

    2023-12-06 20:24:04       61 阅读
  3. Linux 环境变量

    2023-12-06 20:24:04       53 阅读

最近更新

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

    2023-12-06 20:24:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 20:24:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 20:24:04       82 阅读
  4. Python语言-面向对象

    2023-12-06 20:24:04       91 阅读

热门阅读

  1. linux 内核进程管理介绍

    2023-12-06 20:24:04       55 阅读
  2. Mybatis实用教程之XML实现动态sql

    2023-12-06 20:24:04       62 阅读
  3. Git篇常见问题

    2023-12-06 20:24:04       55 阅读
  4. 【MediaTek T830】MediaTek T830介绍

    2023-12-06 20:24:04       39 阅读
  5. 安全行业招聘信息汇总

    2023-12-06 20:24:04       41 阅读
  6. Linux CentOS搭建NGINX环境

    2023-12-06 20:24:04       56 阅读
  7. openssl+EVP详解

    2023-12-06 20:24:04       43 阅读
  8. AI全栈大模型工程师(十五)记忆封装:Memory

    2023-12-06 20:24:04       56 阅读