当前位置: 首页 > news >正文

Linux之环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

环境变量

    • 一、什么是环境变量?
    • 二、常见的环境变量
      • (一)`PATH`
      • (二)`HOME`
      • (三)`SHELL`
    • 三、查看和修改环境变量
      • (一)查看环境变量
      • (二)修改环境变量
    • 四.和环境变量相关的命令
      • 一、查看环境变量
      • 二、设置和修改环境变量
      • 三、其他相关命令
    • 六.环境变量的组织方式
    • 七.环境变量的全局属性
      • 1. **定义**
      • 2. **作用**

一、什么是环境变量?

环境变量是一种动态的值,它存储在操作系统中,用于影响程序运行时的行为。它们就像系统中的“全局变量”,在用户登录时或程序启动时被加载,并在运行过程中被程序引用。环境变量可以包含各种信息,比如文件路径、用户身份、语言设置等。

举个简单的例子,PATH 环境变量是一个非常重要的环境变量,它定义了系统在哪些目录中查找可执行文件。当你在终端输入一个命令时,系统会按照 PATH 中定义的顺序去查找这个命令的可执行文件。如果没有 PATH 环境变量,你可能每次都要输入完整的文件路径来运行一个程序,这显然是非常不方便的。

如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

二、常见的环境变量

(一)PATH

PATH 是最常用的环境变量之一。它是一个由冒号分隔的目录列表,系统会按照这个顺序在这些目录中查找可执行文件。例如,当你输入 ls 命令时,系统会在 PATH 中定义的目录中查找 ls 的可执行文件。

你可以通过以下命令查看当前的 PATH 值:

echo $PATH

如果你需要添加一个新的目录到 PATH 中,可以通过以下命令(以添加 /usr/local/bin 为例):

export PATH=$PATH:/usr/local/bin

这个命令会将 /usr/local/bin 添加到 PATH 的末尾。不过需要注意的是,这种修改只对当前终端会话有效。如果你希望永久修改 PATH,需要将其添加到用户的配置文件中,比如 ~/.bashrc~/.profile

(二)HOME

HOME 环境变量指向当前用户的主目录。对于大多数用户来说,HOME 的值是 /home/username,其中 username 是你的用户名。这个变量在很多场景中都非常有用,比如当你在脚本中需要引用用户的主目录时,可以直接使用 $HOME,而不需要硬编码具体的路径。

例如,你可以通过以下命令快速切换到自己的主目录:

cd $HOME

(三)SHELL

SHELL 环境变量表示当前用户使用的默认 shell。在 Linux 系统中,常见的 shell 有 bashzshdash 等。通过查看 SHELL 的值,你可以知道系统为你分配了哪种 shell。

你可以通过以下命令查看当前的 SHELL 值:

echo $SHELL

如果你想要切换到其他 shell,可以通过 chsh 命令(change shell)来修改默认 shell。

三、查看和修改环境变量

(一)查看环境变量

你可以通过以下命令查看当前所有的环境变量:

env

或者使用 printenv 命令:

printenv

如果你想查看某个特定环境变量的值,可以直接使用 echo 命令,比如:

echo $PATH

(二)修改环境变量

修改环境变量可以通过 export 命令来完成。例如,修改 PATH

export PATH=$PATH:/new/path

如果你需要修改一个变量的值,可以直接覆盖它。比如:

export EDITOR=nano

需要注意的是,这种修改只对当前终端会话有效。如果你希望永久修改环境变量,需要将修改命令添加到用户的配置文件中,比如 ~/.bashrc~/.profile。然后,你需要重新加载配置文件,或者重新登录用户,才能使修改生效。

四.和环境变量相关的命令

  • 查看环境变量printenv env echo
  • 设置环境变量export
  • 删除环境变量unset
  • 持久化环境变量:修改配置文件(如 ~/.bashrc/etc/environment)并使用 source 命令重新加载
  • 其他相关命令settypesetdeclare

一、查看环境变量

  1. printenv
    printenv 命令用于显示当前环境变量的内容。它可以显示所有环境变量,也可以指定显示某个特定的环境变量。
  • 显示所有环境变量

    printenv
    

    这个命令会列出当前环境中所有的键值对。

  • 显示特定环境变量

    printenv PATH
    

    这个命令会显示 PATH 环境变量的值。

  1. env
    env 命令用于显示当前环境变量,也可以用于运行程序时临时设置环境变量。
  • 显示所有环境变量

    env
    

    这个命令与 printenv 类似,会列出当前环境中所有的键值对。

  • 运行程序时设置环境变量

    env VAR=value command
    

    例如:

    env JAVA_HOME=/usr/lib/jvm/java-8-openjdk java -version
    

    这个命令会临时设置 JAVA_HOME 环境变量,并运行 java -version 命令。

  1. echo
    echo 命令用于显示变量的值,通常与 $ 符号一起使用来获取环境变量的值。
  • 显示特定环境变量
    echo $PATH
    
    这个命令会显示 PATH 环境变量的值。

二、设置和修改环境变量

  1. export
    export 命令用于在当前终端会话中设置环境变量。它将变量导出为环境变量,使其对当前会话中的所有子进程都可用。
  • 临时设置环境变量

    export VAR=value
    

    例如:

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
    

    这个命令会将 JAVA_HOME 设置为 /usr/lib/jvm/java-8-openjdk,并且在当前终端会话中有效。

  • 将变量添加到 PATH

    export PATH=$PATH:/new/path
    

    这个命令会将 /new/path 添加到 PATH 环境变量中。

  1. unset
    unset 命令用于删除环境变量,使其不再可用。
  • 删除环境变量
    unset VAR
    
    例如:
    unset JAVA_HOME
    
    这个命令会删除 JAVA_HOME 环境变量。

三、其他相关命令

  1. set
    set 命令用于显示当前 shell 的所有变量和函数定义。它不仅显示环境变量,还会显示局部变量和函数。
  • 显示所有变量和函数
    set
    
  1. typeset
    typeset 命令用于声明变量的类型,并可以设置变量的属性。它在某些 shell(如 kshbash)中可用。
  • 声明变量类型
    typeset -x VAR=value
    
    这个命令会将变量 VAR 声明为环境变量。
  1. declare
    declare 命令与 typeset 类似,用于声明变量的类型和属性。它主要用于 bash shell。
  • 声明变量类型
    declare -x VAR=value
    
    这个命令会将变量 VAR 声明为环境变量。

六.环境变量的组织方式

在这里插入图片描述
每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。

七.环境变量的全局属性

1. 定义

全局环境变量是系统范围内的变量,它们的值对所有用户和所有进程都有效。这些变量通常在系统启动时初始化,并且可以通过修改系统配置文件来设置或修改。

2. 作用

  • 统一配置:全局环境变量可以为系统中的所有用户和程序提供统一的配置信息。例如,PATH 环境变量定义了系统查找可执行文件的路径,通过全局设置可以确保所有用户都能访问到相同的命令路径。
  • 资源管理:全局环境变量可以用于管理系统的资源分配。例如,TMPDIR 可以指定全局的临时文件存储位置,避免默认的 /tmp 目录被填满。
  • 程序依赖:许多系统级程序依赖全局环境变量来获取运行时参数。
    在这里插入图片描述
http://www.dtcms.com/a/479548.html

相关文章:

  • 爱站网挖掘关键词厚昌营销网站建设
  • 大型国有企业网站建设wordpress固定链接显示404
  • 料神wordpress建站教程windows优化大师是什么
  • CCF-GESP 等级考试 2025年9月认证C++二级真题解析
  • 广州公司网站长春新增2个高风险地区
  • wordpress建手机网站吗wordpress 花瓣网
  • 2025深圳国际全触与显示展影响力如何?本次会展有那些亮点?
  • 网站开发有哪些软件有哪些wordpress 获取文章的标签
  • 怎么在网站中做视频背景杭州建网站企业
  • 软考中级软件设计师备考指南(一):计算机系统基础与数据表示
  • 陕西建设执业注册中心网站天津东丽做网站
  • 怎么做下载类的网站吗未注册网站
  • IDEA和GIT实现cherry pick拣选部分变更到新分支
  • 网站建设开源模板婚宴网站源码
  • 一份软件系统性能需求文档示例
  • 淘宝客做自已的网站视觉设计案例
  • 网站产品链接怎么做定兴做网站的
  • 儿童 网站 设计欣赏程家桥街道网站建设
  • Kubernetes 中核心概念的英文单词/术语列表(附音标)
  • 学习笔记--事务管理
  • 芜湖经济开发区网站普陀区网站建设公司哪家好
  • 新浪做网站网站布局设计怎么写
  • 基于SpringBoot的中草药销售管理系统49rn8q0x(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • wordpress做学校网站wordpress主题查看
  • 做网站的时候怎么设置背景拼多多怎么申请开店
  • JWT(JSON Web Token)完全指南
  • 网站建设?首选百川互动网赌网站国外空间
  • 手机号+平台ID和appsecret的简单签名算法
  • 跨平台 移动网站开发安徽建工集团网站
  • 做网站需要注意什么问题工程建设公司网站