您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

配置 Linux 环境变量的六种方法

时间:2023-04-03 12:37:26  来源: Linux迷  作者:

在定制安装软件时,通常需要配置环境变量。下面列出了环境变量的不同配置方法。

linux中读取环境变量的方法:

  • 使用export命令可以显示当前系统定义的所有环境变量。
  • 使用echo $PATH命令可以输出当前PATH环境变量的值。

这两个命令的作用如下:

export:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                              
⚡ export
CMAKE_ROOT=/Applications/CMake.app/Contents/bin/
COLORTERM=truecolor
DBUS_SESSION_BUS_ADDRESS='unix:path=/run/user/1000/bus,guid=95984122dede7a7f5360af3a642734c0'
DBUS_STARTER_ADDRESS='unix:path=/run/user/1000/bus,guid=95984122dede7a7f5360af3a642734c0'
DBUS_STARTER_BUS_TYPE=session
DESKTOP_SESSION=ubuntu-wayland
DISPLAY=:0
GDMSESSION=ubuntu-wayland
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_SETUP_DISPLAY=:1
......

echo $PATH:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                              
⚡ echo $PATH
/Applications/CMake.app/Contents/bin/:/home/linuxmi/.nvm/versions/node/v19.3.0/bin:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/linuxmi/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

其中,PATH变量定义了运行命令的搜索路径,并使用冒号“:”分隔不同的路径。在使用export命令定义时,可以添加双引号或不添加。

Linux环境变量配置方法一:export PATH

使用export命令直接修改PATH的值,并增加JDK环境变量:

[root@k8s-node04 JDK]# pwd
/usr/local/JDK
[root@k8s-node04 JDK]# ll
total 4
drwxr-xr-x  9 root root  126 Sep  7 15:21 jdk-11.0.16
drwxr-xr-x. 7   10  143  245 Oct  6  2018 jdk1.8.0_191
-rwxrwxrwx. 1 root root 2277 Mar 15  2019 Tomcat.keystore
[root@k8s-node04 JDK]# 
[root@k8s-node04 JDK]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/JDK/jdk-11.0.16/bin:/root/bin
[root@k8s-node04 JDK]# 
[root@k8s-node04 JDK]# export PATH=/usr/local/JDK/jdk1.8.0_191/bin:$PATH
[root@k8s-node04 JDK]# 
[root@k8s-node04 JDK]# echo $PATH
/usr/local/JDK/jdk1.8.0_191/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/JDK/jdk-11.0.16/bin:/root/bin

注意事项:

  • 生效时间:立即生效
  • 生效期限:仅对当前终端有效,在窗口关闭后失效
  • 生效范围:仅对当前用户有效
  • 别忘了将原始配置,即$PATH部分,添加到已配置的环境变量中,以避免覆盖原始配置

Linux环境变量配置方法二:vim ~/.bashrc

通过修改用户目录下的~/.bashrc文件进行配置:

vim ~/.bashrc

# Add on the last line
export PATH=$PATH:/usr/local/JDK/jdk1.8.0_191/bin

注意事项:

  • 生效时间:当同一用户打开新终端时生效,或手动执行source ~/.bashrc
  • 生效期限:永久生效
  • 生效范围:仅对当前用户有效
  • 如果有后续的环境变量加载文件覆盖了PATH定义,可能会导致其失效

Linux环境变量配置方法三:vim ~/.bash_profile

与修改~/.bashrc文件类似,也需要在文件末尾添加新的路径:

vim ~/.bash_profile

# Add on the last line
export PATH=$PATH:/usr/local/JDK/jdk1.8.0_191/bin

注意事项:

  • 生效时间:当同一用户打开新终端时生效,或手动执行source /.bash_profile
  • 生效期限:永久生效 · 生效范围:仅对当前用户有效
  • 如果没有/.bash_profile文件,可以编辑~/.profile文件或创建一个新文件

Linux环境变量配置方法四:vim /etc/bashrc

该方法是修改系统配置,需要管理员权限(例如root)或对文件的写入权限:

# If the /etc/bashrc file is not editable, it needs to be modified to be editable
chmod -v u+w /etc/bashrc

vim /etc/bashrc

# Add on the last line
export PATH=$PATH:/usr/local/JDK/jdk1.8.0_191/bin

注意事项:

  • 生效时间:新开终端生效,或手动执行source /etc/bashrc生效
  • 生效期限:永久生效
  • 生效范围:对所有用户有效

Linux环境变量配置方法五:vim /etc/profile

该方法修改系统配置,需要管理员权限或对文件的写入权限,与vim /etc/bashrc类似:

# If the /etc/profile file is not editable, it needs to be modified to be editable
chmod -v u+w /etc/profile

vim /etc/profile

# Add on the last line
export PATH=$PATH:/usr/local/JDK/jdk1.8.0_191/bin

注意事项:

  • 生效时间:新开终端生效,或手动执行source /etc/profile生效
  • 生效期限:永久生效
  • 生效范围:对所有用户有效

Linux环境变量配置方法六:vim /etc/environment

该方法是修改系统环境配置文件,需要管理员权限或对文件的写入权限:

# If the /etc/bashrc file is not editable, it needs to be modified to be editable
chmod -v u+w /etc/environment

vim /etc/environment

# Add on the last line
export PATH=$PATH:/usr/local/JDK/jdk1.8.0_191/bin

注意事项:

  • 生效时间:新开终端生效,或手动执行source /etc/environment生效
  • 生效期限:永久生效
  • 生效范围:对所有用户有效

Linux环境变量加载原理分析

以上列举了环境变量的各种配置方法,那么Linux是如何加载这些配置的呢?它们的加载顺序是怎样的?

特定的加载顺序会导致同名环境变量定义被覆盖或无效。

环境变量的分类 环境变量可以简单地分为用户定义的环境变量和系统级别的环境变量。

  • 用户级环境变量定义文件:/.bashrc、/.profile(有些系统是:~/.bash_profile)
  • 系统级环境变量定义文件:/etc/bashrc、/etc/profile(有些系统是:/etc/bash_profile)、/etc/environment

此外,在用户环境变量中,系统会先读取~/.bash_profile(或~/.profile)文件,如果没有这样的文件,它会读取~/.bash_login,然后根据这些文件的内容读取~/.bashrc。

如何测试Linux环境变量的加载顺序

为了测试不同文件的环境变量加载顺序,我们在每个环境变量定义文件的第一行定义相同的环境变量 UU_ORDER,其值将其自身的值连接到当前文件名后面。

需要修改的文件如下:

/etc/environment
/etc/profile
/etc/profile.d/test.sh,新建文件,无需跳过文件夹
/etc/bashrc,或/etc/bash.bashrc
/.bash_profile,或/.profile ~
/.bashrc

并根据当前文件的绝对文件名相应地修改冒号后面的内容。

export UU_ORDER="$UU_ORDER:~/.bash_profile"

修改完成后保存,打开一个新的窗口,然后使用echo $UU_ORDER命令观察变量的值:

linuxmi@ubuntu:~echoUU_ORDER
$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc

可以推断出,Linux 加载环境变量的顺序如下:

  • /etc/environment
  • /etc/profile
  • /etc/bash.bashrc
  • /etc/profile.d/test.sh
  • ~/.profile
  • ~/.bashrc

Linux 环境变量文件加载详解 从以上测试中,可以很容易地得出 Linux 加载环境变量的顺序如下:

系统环境变量 -> 用户定义的环境变量 /etc/environment -> /etc/profile -> ~/.profile

打开 /etc/profile 文件,您会发现在文件代码中会加载 /etc/bash.bashrc 文件,然后检查 /etc/profile.d/ 目录中的 .sh 文件并加载它们。

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "PS1" ]; then
  if [ "BASH" ] && [ "BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='h:w$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1=' '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r i ]; then
      .i
    fi
  done
  unset i
fi

接下来,打开/.profile文件,您会发现文件中加载了/.bashrc文件。

# if running bash
if [ -n "BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "HOME/.bashrc" ]; then
    . "HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin directories
PATH="HOME/bin:HOME/.local/bin:PATH"

接下来,打开 ~/.profile 文件,可以发现在该文件中加载了 ~/.bashrc 文件。

从 ~/.profile 文件中的代码中,不难发现当用户登录时,只会读取一次 /.profile 文件,而每次运行 Shell 脚本时,都会读取一次 ~/.bashrc。

一些小技巧

你可以自定义一个环境变量文件,比如在某个项目下定义 uusama.profile,使用 export 定义一系列变量在该文件中,然后在 ~/.profile 文件后面添加 sourc uusama.profile,这样就可以在登录的 Shell 脚本中使用自己定义的一系列变量。

你也可以使用 alias 命令为一些命令定义别名,比如 alias rm=”rm -i”(需要使用双引号),并将该代码添加到 ~/.profile 中,这样每次使用 rm 命令时,就很方便地使用 rm -i 命令了。



Tags: Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: Linux  点击:(6)  评论:(0)  加入收藏
2024 年 Linux 和开源的六大趋势预测
让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造本年度的各种潮流。我们不能预见未来,所以无法精确预知将会发生什么,但根据目前...【详细内容】
2024-01-09  Search: Linux  点击:(92)  评论:(0)  加入收藏
对 Bash 感到厌倦?教你如何在 Linux 中更改默认 Shell
Bash 并不是唯一可供选择的 Shell。还存在数量众多的 Shell,它们都有一些独特的特性,例如 Zsh、Fish、Ksh 和 Xonsh。在你的系统中,你可以同时安装多个 Shell。要想将另一个 Sh...【详细内容】
2023-12-14  Search: Linux  点击:(199)  评论:(0)  加入收藏
适用于 Linux 的 LibreOffice 替代品
LibreOffice 是一个出色的开源文档套件。它预装在许多 Linux 发行版上,应该足以满足大多数用户的需求。然而,有些人可能不喜欢它的用户界面和功能集。某些用户可能想尝试其他...【详细内容】
2023-11-30  Search: Linux  点击:(122)  评论:(0)  加入收藏
十个最佳免费 Linux 防火墙工具
概述防火墙是保护网络边界的关键。防火墙会阻止敏感端口并过滤传入和传出流量,以阻止恶意连接并确保不会发生未经请求的数据交换。在自由开源软件的世界里,有很多防火墙解决方...【详细内容】
2023-11-28  Search: Linux  点击:(173)  评论:(0)  加入收藏
如何使用 Linux Xargs 命令,看这篇就够了
一、xargs 命令是什么?该xargs命令构建并执行通过标准输入提供的命令。它接受输入并将其转换为另一个命令的命令参数。此功能在文件管理中特别有用,可与rm、cp、mkdir和其他类...【详细内容】
2023-11-23  Search: Linux  点击:(176)  评论:(0)  加入收藏
揭秘 Linux 调度策略与 CFS 调度算法:解锁内核的奥秘
引言在当今计算机领域,Linux操作系统扮演着至关重要的角色,而其中的调度策略和内核结构体更是它多任务处理的核心。本文将引领你深入探索Linux中的调度策略,理解不同策略如何影...【详细内容】
2023-11-23  Search: Linux  点击:(216)  评论:(0)  加入收藏
使用 dialog 和 jq 在 Linux 上编写高效终端 TUI
为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此,文字用户界面Text User Interface(TUI)逐渐显示出其价值。它能减少用户输入命令时的误差,让终端操作更高效,提高生产力。以...【详细内容】
2023-11-19  Search: Linux  点击:(117)  评论:(0)  加入收藏
这些 Linux 基础命令你总得掌握吧
很多深度学习/机器学习/数据分析等领域(或者说大多数在Python环境下进行操作的领域)的初学者入门时是在Windows上进行学习,也得益于如Anaconda等工具把环境管理做的如此友善。...【详细内容】
2023-11-10  Search: Linux  点击:(169)  评论:(0)  加入收藏
如何在 Linux 下使用 WebP 图像
WebP 图像格式的定义2010 年 9 月,谷歌提出了 WebP 图像格式,其愿景是完全替代 JPEG、PNG 和 GIF 文件格式。就如你所见,WebP 是一个全能型的格式,继承了先前压缩算法的所有特性...【详细内容】
2023-09-25  Search: Linux  点击:(317)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(6)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(16)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(10)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(11)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(54)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(49)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(51)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(77)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(68)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条