如何在 Linux 中设置和列出环境变量

2023-11-05

在基于 Linux 和 Unix 的系统中,环境变量是一组动态命名值,存储在系统中,供在 shell 或子 shell 中启动的应用程序使用。简而言之,环境变量是具有名称和关联值的变量。

环境变量允许您自定义系统的工作方式以及系统上应用程序的行为。例如,环境变量可以存储有关默认值的信息文本编辑器或浏览器、可执行文件的路径或系统区域设置和键盘布局设置。

在本指南中,我们将解释如何读取和设置环境变量和 shell 变量。

环境变量和 shell 变量#

变量具有以下格式:

KEY=value
KEY="Some other value"
KEY=value1:value2
  • 变量的名称区分大小写。按照约定,环境变量名称应大写。
  • 为变量分配多个值时,必须用冒号分隔它们:特点。
  • 等号周围没有空格= symbol.

变量可以分为两大类:环境变量和shell变量。

环境变量是系统范围内可用的变量,并且由所有生成的子进程和 shell 继承。

外壳变量是仅适用于当前 shell 实例的变量。每个外壳如zsh and bash,有自己的一组内部 shell 变量。

有几个命令可让您在 Linux 中列出和设置环境变量:

  • env– 该命令允许您在自定义环境中运行另一个程序,而无需修改当前程序。当不带参数使用时,它将打印当前环境变量的列表。
  • printenv– 该命令打印所有或指定的环境变量。
  • set– 该命令设置或取消设置 shell 变量。当不带参数使用时,它将打印所有变量的列表,包括环境和 shell 变量以及 shell 函数。
  • unset– 该命令删除 shell 和环境变量。
  • export– 该命令设置环境变量。

列出环境变量#

显示环境变量最常用的命令是printenv。如果变量的名称作为参数传递给命令,则仅显示该变量的值。如果没有指定参数,printenv打印所有环境变量的列表,每行一个变量。

例如,要显示的值HOME您将运行的环境变量:

printenv HOME

输出将打印当前登录用户的路径:

/home/linuxize

您还可以将多个参数传递给printenv命令:

printenv LANG PWD
en_US
/home/linuxize

如果您运行printenv or env不带任何参数的命令它将显示所有环境变量的列表:

printenv

输出将如下所示:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
S_COLORS=auto
XDG_SESSION_ID=5
USER=linuxize
PWD=/home/linuxize
HOME=/home/linuxize
SSH_CLIENT=192.168.121.1 34422 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/linuxize
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=linuxize
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv

以下是一些最常见的环境变量:

  • USER- 当前登录的用户。
  • HOME- 当前用户的主目录。
  • EDITOR- 要使用的默认文件编辑器。这是您键入时将使用的编辑器edit在您的终端中。
  • SHELL- 当前用户 shell 的路径,例如 bash 或 zsh。
  • LOGNAME- 当前用户的名称。
  • PATH- 执行命令时要搜索的目录列表。当您运行命令时,系统将按此顺序搜索这些目录并使用第一个找到的可执行文件。
  • LANG- 当前区域设置。
  • TERM- 当前的终端仿真。
  • MAIL- 当前用户邮件的存储位置。

The printenv and env命令仅打印环境变量。如果您想获取所有变量的列表,包括环境、shell 和变量,并且外壳函数你可以使用set命令:

set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()

该命令将显示所有变量的大型列表,因此您可能希望将输出通过管道传输到less命令。

set | less

您还可以使用回显命令打印 shell 变量。例如,要打印的值BASH_VERSION您将运行的变量:

echo $BASH_VERSION
4.4.19(1)-release

设置环境变量#

为了更好地说明 Shell 变量和环境变量之间的区别,我们将从设置 Shell 变量开始,然后继续讨论环境变量。

使用名称创建新的 shell 变量MY_VAR和价值Linuxize只需输入:

MY_VAR='Linuxize'

您可以使用以下任一方法验证变量是否已设置echo $MY_VAR过滤 set 命令的输出grep set | grep MY_VAR:

echo $MY_VAR
Linuxize

Use the printenv命令检查该变量是否是环境变量:

printenv MY_VAR

输出将为空,这告诉我们该变量不是环境变量。

您还可以尝试在新 shell 中打印该变量,您将得到空输出。

bash -c 'echo $MY_VAR'

The export命令用于设置环境变量。

要创建环境变量,只需将 shell 变量导出为环境变量:

export MY_VAR

您可以通过运行以下命令来检查:

printenv MY_VAR
Linuxize

如果这次尝试在新 shell 中打印变量,您将在终端上打印变量名称:

bash -c 'echo $MY_VAR'
Linuxize

您还可以在一行中设置环境变量:

export MY_NEW_VAR="My New Var"

以这种方式创建的环境变量仅在当前会话中可用。如果您打开新的 shell 或注销,所有变量都将丢失。

持久环境变量#

要使环境变量持久化,您需要在 bash 配置文件中定义这些变量。在大多数 Linux 发行版中,当您启动新会话时,将从以下文件中读取环境变量:

  • /etc/environment- 使用此文件设置系统范围的环境变量。该文件中的变量按以下格式设置:

    FOO=barVAR_TEST="Test Var"
  • /etc/profile- 每当输入 bash 登录 shell 时,都会加载此文件中设置的变量。在此文件中声明环境变量时,您需要使用export命令:

    export JAVA_HOME="/path/to/java/home"export PATH=$PATH:$JAVA_HOME/bin
  • 每个用户 shell 特定的配置文件。例如,如果您使用的是 Bash,则可以在~/.bashrc:

    export PATH="$HOME/bin:$PATH"

要将新的环境变量加载到当前 shell 会话中,请使用source命令:

source ~/.bashrc

结论#

在本指南中,我们向您展示了如何设置和列出环境变量和 shell 变量。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Linux 中设置和列出环境变量 的相关文章

随机推荐

  • 关于 Linux shell 的一切

    shell 是一个命令行解释器 它是一个特殊的程序 它从标准输入设备获取输入 将其转换为机器语言并发送到操作系统 操作系统处理后 将结果发送回shell Shell 再次将其转换为人类可读的格式并将结果发送到输出设备 Linux 外壳 Ba
  • 如何在 Fedora Linux 上安装 Skype

    Skype 是一个流行的通信平台 提供即时消息 语音和视频通话以及屏幕共享和文件传输功能 它广泛用于个人和专业目的 尽管 Skype 在官方 Fedora 存储库中不可用 但仍然可以使用第三方存储库或通过手动下载并安装 RPM 包将其安装在
  • 如何在 Ubuntu 18.04 和 16.04 LTS 上安装 MariaDB 10

    MariaDBia 是 MySQL 的增强型 直接替代品 对于寻找数据库专业人士来说 MariaDB 可能是更好的选择robust scalable and reliableSQL 服务器 MariaDB 相对于 MySQL 有许多更新的功
  • 如何在 CentOS、RedHat 和 Fedora 上安装 Ajenti 控制面板

    Ajenti 是一个基于 Web 的控制面板 用于管理系统 如 Webmin cPanel 它有一个非常漂亮且用户友好的界面 对于个人使用 Ajenti 可根据 AGPLv3 免费使用 对于商业用途 您必须定期支付少量费用 本文将帮助您在
  • 如何在 Fedora 和 CentOS 上安装 Opera

    Opera 是一种流行的网络浏览器 拥有大量用户 它是一款安全 快速的网络浏览器 适用于移动和桌面系统 该浏览器提供内置 VPN 以确保用户安全浏览 您可以直接从其官方网站下载Opera网页浏览器RPM包 此外 它还可以使用 Snap 包进
  • C 程序将两个数字相加

    在本文中 我们将深入研究 C 语言编程的实践方面 特别关注一个基本操作 两个数字相加 虽然它看起来很基础 但它是理解更大 更复杂的程序的基石 C 中两个数相加 在 C 语言中添加两个数字是一项简单的任务 通常是初学者了解该语言的语法和结构的
  • 如何在 Ubuntu 20.04 上安装 Redis

    Redis 是一种内存数据结构存储 用作数据库服务器 缓存和消息代理 Redis是用C编程语言编写的 它还提供了一个 PHP 模块 用于 PHP 脚本与 Redis 服务器之间的通信 本教程将帮助您在 Ubuntu 20 04 LTS 系统
  • 如何在 Debian 10 (Buster) 上安装 Java

    Java 是一种流行的编程语言 有数十亿的应用程序使用 我们知道 Oracle JDK 需要 Oracle 二进制代码许可协议下的商业许可 我们将在您的 Debian 系统上安装 OpenJDK OpenJDK 是完全免费的开源 Java
  • 如何使用 Imapsync 在 IMAP 服务器之间传输邮箱

    什么是 Imapsync Imapsync 是一种 IMAP 传输工具 用于将邮箱和电子邮件从一个 IMAP 服务器传输到另一个 IMAP 服务器 Imapsync 应用程序是一种命令行工具 允许增量和递归 IMAP 从一个邮箱传输到另一个
  • 如何在 Ubuntu 18.04、16.04 上安装和配置 OpenVPN 服务器

    VPN 或虚拟专用网络是一组通过公共网络 Internet 连接到专用网络的计算机 如今 安全性是每个人最关心的问题 在公共网络上工作时更需要安全性 就像您在远程位置有一组计算机一样 现在您需要将这些计算机作为系统中的 LAN 网络进行访问
  • 如何在 Ubuntu 22.04 上安装和使用 Monit

    Monit 是一个多功能且功能强大的开源实用程序 用于管理和监控基于 Unix 的系统 它可用于监视系统资源 服务和应用程序 使您能够确保它们以最佳状态运行并保持可用 Monit 还可以配置为自动重新启动服务并在满足某些条件时发送通知 在本
  • 使用 Python FastAPI 和 MySQL

    FastAPI 是一个现代 快速 高性能 的 Web 框架 用于使用 Python 构建 API 它基于标准 Python 类型提示构建 使其易于使用 同时为开发人员提供了许多高级功能 构建 FastAPI 应用程序时 为了安全性和模块化
  • 如何在 CentOS 8 上配置静态 IP 地址

    问题 如何在 CentOS 8 上更改或配置 IP 地址 在 CentOS 桌面系统上设置静态 IP 地址的步骤 截至今天 CentOS 8 Linux 操作系统是 CentOS 的最新可用版本 桌面提供了一个有吸引力的 GUI 来使用它
  • Java 开发人员的重要代码格式化技巧

    Java 代码格式化是编写干净 可读和可维护代码的一个重要方面 在整个团队或组织中采用一套一致的格式化规则将显着提高代码库的整体质量 使开发人员更容易理解 修改和调试代码 本文将概述 Java 代码格式化最佳实践 讨论开发人员可以用来增强代
  • 如何在 Fedora 35/34/33 上安装 Erlang

    Erlang是一种编程语言 用于构建具有高可用性要求的大规模可扩展的软实时系统 Erlang运行时系统内置了对并发 分布式和容错的支持 本教程将帮助您在 Fedora Linux 系统上安装 erlang 步骤 1 在 Fedora 上安装
  • 如何在 Ubuntu 和 Debian 上设置 Squid 代理服务器

    如果您正在寻找一种增强 Debian 服务器安全性和性能的方法 那么设置 Squid 代理服务器可能是一个不错的选择 Squid 是一种广泛使用的开源代理服务器 提供缓存 过滤和身份验证等各种功能 在本文中 我们将讨论在 Ubuntu 和基
  • 如何在 CentOS 8 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 本文介绍了在 CentOS 8 上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 先决条件 要遵循
  • Linux 中的日期命令

    在本教程中 我们将介绍以下基础知识date命令 The date命令显示或设置系统日期 它最常用于以不同格式打印日期和时间以及计算未来和过去的日期 使用Linuxdate命令 语法为date命令如下 date OPTION FORMAT 要
  • 如何在 CentOS 8 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用非常广泛 包括医学图像分析 拼接街景图像
  • 如何在 Linux 中设置和列出环境变量

    在基于 Linux 和 Unix 的系统中 环境变量是一组动态命名值 存储在系统中 供在 shell 或子 shell 中启动的应用程序使用 简而言之 环境变量是具有名称和关联值的变量 环境变量允许您自定义系统的工作方式以及系统上应用程序的