Linux中环境变量设置及查看方法(临时环境变量和用户级别长期环境变量)

embedded/2024/9/23 12:06:13/

设置环境变量的方式:(三种)

Linux中通常来说设置环境变量分为三种:临时设置环境变量(只在当前用户当前终端会话中有效),将环境变量添加到 Shell 启动文件(对当前用户有效),将环境变量设置在系统级别(对所有用户生效)。

设置临时环境变量

这是最简单的一种方式,这样设置的环境变量仅在当前终端会话有效。可以通过 echo $VAR_NAME 查看已设置的环境变量。

特点:

  • 临时有效:变量仅在当前终端会话中有效,关闭终端或退出登录后失效。
  • 简单方便:适合一次性临时调整环境的场合。

覆盖原有的环境变量(不用:)

export PATH=/usr/local/bin
  • 作用:完全覆盖现有的 PATH 变量值,只设置为 /usr/local/bin

  • 解释:此命令会移除之前 PATH 中所有的其他路径,仅将 /usr/local/bin 设为新的 PATH 值。也就是说,之后系统只会在 /usr/local/bin 目录中查找可执行文件。

  • 使用时要小心:由于采用这种方式设置可能会覆盖之前的环境变量,所以使用的时候应该检查一下环境变量里面内容,内容为空或者确定里面环境变量没用才可覆盖。

在原有环境变量中增加路径选项(使用:)

export PATH=$PATH:/usr/local/bin
  • 作用:在当前的 PATH 变量值基础上,追加 /usr/local/bin 目录。

  • 解释:这里的 $PATH 表示当前已有的 PATH 值,命令将 /usr/local/bin 添加到 PATH 变量的末尾,同时保留了原有的路径设置。

  • $PATH 是一个 引用当前环境变量 PATH 的用法。PATH 是一个环境变量,包含了一系列目录的路径,当你在终端中输入一个命令时,Linux 系统会按照 PATH 环境变量中列出的目录顺序,查找这个命令的可执行文件。通过 $PATH,你可以引用或获取 PATH 的当前值。

  • 环境变量引用优化:为了确保变量名的边界清晰,以避免与其他字符混淆,我们还可以使用{}来将引用的变量括起来。比如:export THIRDPART_PATH=${DDK_PATH}/thirdpart。

  • 采用覆盖/追加设置环境变量的时候,都可以引用环境变量来构建新的环境变量,不仅可以引用自身环境变量也可以引用其他环境变量

追加环境变量时的顺序

: 是路径分隔符,表示多个路径可以同时存在,系统会按顺序查找这些路径。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/new/path
  • 这里表示在已有的 LD_LIBRARY_PATH 值后面追加 /new/path
  • 如果原来的 LD_LIBRARY_PATH 变量已经包含了一些路径,那么 /new/path 会被追加到末尾。
  • 例如:如果 LD_LIBRARY_PATH 最初的值是 /usr/lib,执行该命令后它会变成 /usr/lib:/new/path
export LD_LIBRARY_PATH=/new/path:$LD_LIBRARY_PATH
  • /new/path 是你想要添加的新的路径。
  • $LD_LIBRARY_PATH 表示当前 LD_LIBRARY_PATH 的值,包含之前已经设置的路径。
  • : 是路径分隔符,用来连接多个路径。
  • 这条命令将 /new/path 放在最前面,表示在查找库文件时,系统会优先/new/path 目录下查找动态库,然后再按顺序查找 LD_LIBRARY_PATH 中其他已有的路径。

设置长期环境变量到 Shell 启动文件

Bash启动文件介绍

如果我们需要长期使用这个环境变量,最好是将环境变量写入到Shell 启动文件中更加方便。Shell 是一个 命令行解释器,在用户输入命令执行程序的时候都会用到它,它的作用是:将用户在终端输入的命令翻译为操作系统可以理解和执行的操作。在我们linux中最常见的Shell应该就是bash了。所以要想使得环境变量在当前用户长期有效,我们应该将环境变量添加到bash启动文件中

Bash 是常见的 Shell 之一,它有两种类型的启动:登录 Shell非登录 Shell。两种方式登录Bash对应着启动不同种类的文件

登录Shell

登录 Shell 是指用户通过终端登录(例如输入用户名和密码),或者通过ssh远程登录进入的 Shell 会话。登录 Shell 启动时会读取以下文件:

  • 系统范围的文件

    • /etc/profile:系统范围的全局配置文件,适用于所有用户。它会在每次用户登录时读取。
  • 用户范围的文件

    • ~/.bash_profile:用户个人的 Bash 登录 Shell 配置文件。最常用于设置环境变量和启动脚本。
    • ~/.bash_login:如果找不到 .bash_profile,则会读取该文件。
    • ~/.profile:如果 .bash_profile.bash_login 都不存在,则会读取 .profile
  • 常见做法: 登录 Shell 通常会在 .bash_profile 中包含 .bashrc,这样无论是登录 Shell 还是非登录 Shell,都会执行 .bashrc,保证配置一致。

非登录 Shell

非登录 Shell 是指用户直接打开一个终端窗口的 Shell,而不需要登录。例如在桌面环境中打开终端窗口,或者运行一个脚本。这种情况下,Bash 会读取以下文件:

  • ~/.bashrc:这是非登录 Shell 主要使用的启动文件。一般会在这里设置环境变量(长期),别名、函数、命令提示符等个性化配置。

注意:

  • 我们可以通过命令行输入echo $0命令,查看输出结果来判断当前的bash终端是登录Shell还是非登录Shell。如果输出的是类似于 -bash,那说明是登录 Shell。如果输出的是类似于bash,没有-,那说明是登录 Shell。
  • 我们平时其实并不需要很关心究竟通过登录Shell/非登录Shell启动的bash。由于这两种方式都会加载.bashrc文件,(.bash_profile 中包含 .bashrc)所以为了保证我们运行程序时环境一致,通常会选择将环境变量写入到.bashrc文件

环境变量写入到~/.bashrc的方法

首先我们来看文件:~/.bashrc的名字,可以发现这是一个隐藏文件,并且处在我们的家目录下(~表示的就是当前用户的家目录),也说明了写入到~/.bashrc文件的环境变量仅仅对当前用户有效。

1. 打开~/.bashrc文件

vim ~/.bashrc

2. 找到文件末尾(一般做法),或者在文件中任何适合的位置,添加你想要的环境变量。

export PATH="$PATH:/new/path/directory"
  • 这里将路径用""包起来了,主要是让明确让这个路径是一个整体,万一路径中出现了空格的话就会被认为是两部分导致出错,加上""更加保险。
  • 这里export环境变量和上面设置临时环境变量的语法一样,都是可以选择增加方式也可以选择覆盖。

3. 让修改立即生效:

source ~/.bashrc

这会重新加载 ~/.bashrc 文件,所有新添加的环境变量将立即生效。当然你也可以选择关闭当前终端,然后再次打开也会生效。

最后,可以通过命令echo $PATH来查看检验设置的这个环境变量是否生效。

将环境变量设置在系统级别

之后详细聊这里吧,因为平时我们也用不到这里,常见的做法是将环境变量设置在用户级别,我们很少需要将环境变量设置到整个系统(所有用户)。

查看环境变量

使用echo命令:

echo 是最简单的方法,它会直接输出当前环境变量的值

echo $LD_LIBRARY_PATH

使用printenv命令:

printenv 可以显示所有环境变量或特定环境变量的值

printenv LD_LIBRARY_PATH

这将只输出 LD_LIBRARY_PATH 变量的值。如果你想查看所有环境变量,可以不加参数:

printenv

使用echo和printenv命令查看到的环境变量包括临时的,用户的以及系统的。如果我们想要单独查看系统级别的,可以vim打开/cat对应的文件来查看(比如查看~/.bashrc文件)。


http://www.ppmy.cn/embedded/115578.html

相关文章

反序列化- Jackson...

Jackson库 Jackson库的核心功能是将Java对象转换为JSON字符串(序列化)以及将JSON字符串转换为Java对象(反序列化) 反序列化器及序列化器 JSR310DateTimeDeserializerBase和JSR310FormattedSerializerBase抽象类 当你创建这些子…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分: 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的: 一、数据上报方式 本文的方案是,优先navigator.sendBeacon,降级使用1x1像素gif图片…

开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-集成vLLM(二)

一、前言 学习Qwen2-VL ,为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野,更让我们站在科技发展的潮头,紧跟时代的步伐。 Qwen2-VL 具有卓越的图像和视频理解能力,以及多语言支…

面试爱考 | 设计模式

一、概述二、创建型 1. 单例(Singleton) IntentClass DiagramImplementationExamplesJDK 2. 简单工厂(Simple Factory) IntentClass DiagramImplementation 3. 工厂方法(Factory Method) IntentClass Diagr…

WPF DataGrid 单元格居中,头部居中,点击行改变背景色。

我得全局样式都写在了App.XAML文件下的ResourceDictionary里&#xff0c;方便全局引用 DataGrid样式和点击改变行背景色的触发器(BasedOn继承的是UI框架的样式&#xff0c;若无则删除&#xff0c;触发器还有鼠标移动事件等&#xff0c;按需自行修改添加) <Style x:Key&quo…

word-break和word-wrap

1&#xff0c;word-break:break-all 例如div宽200px&#xff0c;它的内容就会到200px自动换行&#xff0c;如果该行末端有个英文单词很长&#xff08;congratulation等&#xff09;&#xff0c;它会把单词截断&#xff0c;变成该行末端为conra(congratulation的前端部分)&#…

mongoDB 读取数据python版本实现

要使用Python从MongoDB读取数据&#xff0c;你可以使用pymongo库。首先确保你已经安装了pymongo&#xff0c;如果没有安装&#xff0c;可以通过pip来安装它&#xff1a; pip install pymongo 接下来&#xff0c;我将展示如何使用给定的MongoDB连接字符串来连接数据库&#xff…

【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a; https://qm.qq.com/q/jTIeGzwkSchttps://qm.qq.com/q/jTIeGzwkSc 题 目&#xff1a; 大数据驱动的…