如何在 Linux 中设置/创建环境和 Shell 变量

2023-11-09

Shell 是操作系统的命令解释器,处理在命令行中输入的命令,在 Linux 中广泛使用。变量就像指向特定数据的指针,并保存可以是任何值的特定值。用户可以在 Shell 的帮助下创建、删除或分配变量。

当 Shell 运行时,存在三种类型的变量:

  1. 局部变量
  2. 外壳变量
  3. 环境变量

在本教程中,我们将了解如何在 Linux 中设置环境和 Shell 变量。

什么是 shell 变量?

Shell 变量特定于当前 shell,并由 Shell 使用来正确运行。这些变量是临时的,要使它们永久化,您可以将它们导出为环境变量。

一些常见的 shell 变量是:

  • UID:当前登录用户的ID
  • 主机名:特定时间计算机的主机名
  • BASH_VERSINFO:bash 版本的机器可读形式
  • BASH_版本:bash 版本的人类可读输出
  • 迪斯塔克:可通过“popd”和“pushd”命令使用的目录堆栈
  • 贝壳选择:可以设置外壳选项

什么是环境变量?

环境变量是系统范围内可用的变量,可供 shell 的任何程序或子进程使用。此外,Shell 脚本定义了运行程序所需的环境变量。

一些常见的环境变量是:

  • MAIL:用户的邮件目录或用户邮箱的路径
  • TEMP:临时文件的目录位置
  • PWD:当前工作目录
  • OLDPWD:之前的工作目录
  • USER:当前用户已登录
  • LANG:当前语言
  • LOGNAME:用户名
  • HOME:当前用户的主目录
  • _:最近执行的上一个命令
  • SHELL:当前的外壳
  • EDITOR:Linux默认的文本编辑器
  • 主机名:网络上设备的主机名

以下是一些可帮助您设置 Shell 和环境变量的命令:

  • env:您可以使用自定义环境来运行另一个程序,而无需修改现有环境。
  • 打印环境:这将打印系统的所有环境变量。
  • set:用于设置环境和 shell 变量。
  • unset:用于删除环境变量和shell变量。
  • exports:让我们将 shell 变量导出到环境变量中。

如何打印Shell和环境变量?

Shell 跟踪所有环境和 Shell 变量。要访问它,我们可以使用这两个命令:

  • 打印环境:打印所有环境变量。
  • set:打印 Shell 变量。

如何在Linux中设置环境变量和Shell变量?

现在我们知道环境变量和 Shell 变量是什么了。那么让我们学习如何在 Linux 中创建和设置这些变量。实际中清楚地理解环境变量和 Shell 变量之间的区别。我们将首先设置 Shell 变量,然后设置环境变量。

创建 Shell 变量

  • 要设置 Shell 变量,请在 Shell 中运行此命令。这将创建一个可在当前会话中使用的 Shell 变量。
    TESTVAR='Hello!' 
    
  • We can also check our variable with the grep command.
    set | grep TESTVAR
    

    您将看到这样的输出。

    
    TESTVAR='Hello!'
      
  • 您还可以使用以下命令查看 shell 变量的值。
    echo $TESTVAR
    
  • As it is a Shell variable, so it will not be available for other applications or child processes. You can even verify that it is not an Environment variable.
    printenv | grep TESTVAR
    

    不会有任何输出。这意味着它不是环境变量。

创建环境变量

  • 现在,让我们将 Shell 变量导出到环境变量中。使用以下命令来执行此操作。
    export TESTVAR 
    
  • This will turn our Shell variable into an Environment variable and to verify that run the following command.
    printenv | grep TESTVAR 
    

    这次你会看到这样的输出。

    
    TESTVAR='Hello!'
      
  • 现在我们知道如何将 Shell 变量转换为环境变量,但如何直接创建环境变量。您可以使用此命令一步设置环境变量。
    export NEWVAR="Hello Env" 
    
  • It will be directly exported as an Environment variable and you can verify that.
    printenv | grep NEWVAR 
    

    您将看到这样的输出。

    
    NEWWAR=Hello Env 
      

这样就可以在Linux中设置Shell和Environment了。

取消设置变量

现在您知道如何设置变量了。让我们了解如何取消它们。

  • 您可以使用此命令再次将环境变量更改为 Shell 变量。
    export -n TESTVAR 
    
  • 它将仍然是一个 Shell 变量,但不是一个环境变量。让我们验证一下。
    printenv | grep TESTVAR 
    
  • There will be no output but if we check it for the Shell variable,
    set | grep TESTVAR 
    

    你会看到输出。

    
    TESTVAR='Hello!'
      
  • 如果您想完全取消设置,请使用此命令。
    unset TESTVAR 
    

结论

如果您经常使用 Shell,那么环境和 Shell 变量可能对您非常有用,从长远来看,学习如何设置和取消设置这些变量将会有好处。

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

如何在 Linux 中设置/创建环境和 Shell 变量 的相关文章

  • 在 shell 中将 ANSI 转换为 UTF-8

    我正在制作一个解析器 1 csv 到 3 csv 脚本 但遇到问题 我是法国人 所以用我的语言我有这样的字母 一位客户向我发送了一个 csv 文件 Linux 将其识别为 unknown 8bit 我猜是 ansi 在我的脚本中 我正在编写
  • 如何在节点中转义 shell 命令的字符串?

    In nodejs http nodejs org 执行外部命令的唯一方法是通过 sys exec cmd 我想调用外部命令并通过标准输入为其提供数据 在nodejs中 似乎还没有一种方法可以打开命令 然后将数据推送到它 仅执行并接收其标准
  • 创建 QT 应用程序作为 Windows 上现有基于控制台的应用程序的 GUI

    我正在尝试使用 Qt 为现有应用程序设置一个 GUI 该应用程序旨在在 Windows 命令行中运行 这不仅仅是运行应用程序system 命令 但我需要通过命令行与现有应用程序交互 The system 当我启动现有的可执行文件时 命令会阻
  • 如何提供准备好的 git 提交消息?

    按照惯例 我在 git 中创建故事分支 以在其中包含 Jira 问题 ID 例如FOO 1001 我有一个脚本可以帮我做到这一点 现在 我准备了另一个脚本 用于从 Jira API 获取 FOO 1001 的标题 我想在输入时实现这一目标
  • 有没有办法获取正在运行或新打开的资源管理器窗口的 IExplorerBrowser 接口以供后续 BrowseToXXX 调用?

    这么问是因为在上一个问题 https stackoverflow com questions 6220899 answer 6221898我是指向 IExplorerBrowser 的指针 但是它创建了一个子窗口 而我想模拟资源管理器的 查
  • 重写 openshift maven 脚本 (jenkins gear)

    我在 Openshift 上有 Jenkins 实例 我已启用 Jenkins 构建我的 Openshift 应用程序 这里是 Jenkins shell 脚本的一部分并记录它们生成的内容 Sync any libraries rsync
  • Shell Linux:grep 带有 NULL 字符的精确句子

    我有一个像这样的文件 key 0value n akey 0value n key2 0value n 我必须创建一个以单词作为参数的脚本 我必须返回具有与参数完全相同的键的每一行 I tried grep aF key x0 但 grep
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap
  • 如何在 ruby​​ 中后台运行多个外部命令

    给定这个 Unix shell 脚本 test sh bin sh sleep 2 sleep 5 sleep 1 wait 时间 test sh real 0m5 008s user 0m0 040s sys 0m0 000s 如何在 U
  • 如何让SSH命令执行超时

    我有一个这样的程序 ssh q email protected cdn cgi l email protection exit echo output value gt 在上面的代码中 我尝试通过 SSH 连接到远程服务器 并尝试检查是否可
  • 如何从 Emacs 中运行 Cygwin Bash Shell?

    我在 Windows 上运行 GNU Emacs 因此输入 M x shell 启动 Windows 命令行 DOS shell 但是 我希望能够从 Emacs 中运行 Cygwin Bash Shell 或任何其他非 Windows sh
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • “排序文件名 | uniq”不适用于大文件

    我可以从小文本文件中删除重复条目 但不能从大文本文件中删除重复条目 我有一个 4MB 的文件 文件的开头如下所示 aa aah aahed aahed aahing aahing aahs aahs aal aalii aalii aali
  • 使用 sh shell 比较字符串

    我正在使用 SH shell 我试图将字符串与变量的值进行比较 但是if条件始终执行为真 为什么 这是一些代码 Sourcesystem ABC if Sourcesystem eq XYZ then echo Sourcesystem M
  • Web 本地应用程序 Apache:运行 shell 脚本

    我开发了一个 shell 脚本 我想用它创建一个 UI 我决定使用带有本地服务器的 Web 界面 因为我对 HTML PHP 的了解很少 比 QT 或 Java 的了解更多 我只是希望我的 html 可以在我的计算机上运行 shell 脚本
  • 如何在 Bash 中将字符串转换为小写

    有办法进去吗bash questions tagged bash将字符串转换为小写字符串 例如 如果我有 a Hi all 我想将其转换为 hi all 有多种方法 POSIX标准 https en m wikipedia org wiki
  • Openshift 上的自定义 Node.js 版本

    我在运行自定义节点版本时遇到问题node0 10您可以在开放班次中找到墨盒here https github com DavidReinberger openshift meteor leaderboard customNode 我可以很好
  • 寻找下一个开放端口

    有没有什么办法 使用基本的 Unix 命令 找到下一个未使用的端口号 从端口 4444 开始向上 我通过 ssh 通过 openssh 进入 Windows XP 计算机 运行 Cygwin 工具并使用 bash shell 谢谢 戴夫 尝
  • 如何获取与文件类型关联的图标路径和索引?

    给定一个文件类型 例如 txt 我怎样才能得到 path index 文件类型的关联图标路径和索引 例如 我想转换 txt into Path SystemRoot system32 imageres dll Index 102 有了这些信
  • Bash 完成脚本在某些参数选项后完成文件路径

    我正在为命令行工具编写 bash 完成脚本 plink local cur prev opts COMPREPLY cur COMP WORDS COMP CWORD prev COMP WORDS COMP CWORD 1 opts 1

随机推荐

  • tomcat部署、tomcat虚拟主机及tomcat多实例、tomcaty优化

    目录 一 Tomcat概述 tomcat是什么 什么是 servlet 什么是 JSP Tomcat 功能组件结构 Container 结构分析 Tomcat 请求过程 二 Tomcat部署 1 关闭防火墙和selinux 并将Tomcat
  • sprintf函数的用法

    说明1 该函数包含在stdio h的头文件中 使用时需要加入 include
  • 测试经验小谈

    一 注意事项 新建一条数据时 如果有数据新建的时间 注意核对是否与当前时间相同 告知开发要进行测试 让开发停止提交代码 包证当前测试的结果只针对当前版本 准确定位BUG 同时 防止引入新的BUG 关于断网测试 明确当前的软件是否需要断网测试
  • 自动化测试 —— Pytest测试框架

    01 简介 Pytest是一个非常成熟的全功能的Python测试框架 主要有以下特点 简单灵活 容易上手 文档丰富 支持参数化 可以细粒度地控制测试用例 支持简单的单元测试与复杂的功能测试 还可以用来做Selenium Appium Req
  • ubuntu 上安装 oprofile

    1 wget http prdownloads sourceforge net oprofile oprofile 0 9 6 tar gz 2 tar zxf oprofile 0 9 6 tar gz 3 configure check
  • win10计算机管理不可用,win10管理员被禁用怎么办,win10怎么管理员运行

    Win10家庭版出现了Windows Defender 安全中心提示 windows defender 页面不可用 你的IT管理员已经限制对此应用一些区域的访问 你尝试访问的项目不可用 有关详细信息 请与你的IT支持人员联系 话说电脑基本都
  • flask启动mysql报错:1287, @@tx_isolation' is deprecated and will be removed in a future release. Please u

    首先 这只是一个警告 不是报错 并不会影响项目运行 如果项目启动不了 应该是别的地方出问题了 解决办法 在当前python版本的依赖包里找到sqlalchemy dialects mysql里的base py文件修改源码 例如我的 C Us
  • 计算机丢失msvcp110.dll是什么意思?如何修复?

    在修复msvcp110 dll文件的过程中 我经历了一些挑战 但也获得了一些宝贵的经验和感悟 首先 我意识到在遇到msvcp110 dll错误时 不要恐慌 这个问题并不是无解的 只要我们能够采取正确的方法和步骤 很有可能解决它 其次 我学会
  • 共用一块存储union

    2017 02 14 举一个不恰当的例子 你想用二叉树来做表达式树 但是里面既有运算符又有运算数 但是存储节点里面只能有一种类型 不过好在这个还好分析 那就是我只需要判断他是不是叶子就可以知道这个节点里的存储信息 就可以用union的方式来
  • JAVA项目开发之文档篇

    项目开发过程中为了增加程序的可读性和程序的健壮性 方便后期程序的调试和维护 所以需要在开发过程中统一技术规范 一般会在项目初期确定好相关文档作为这一统一的规范 不同公司会对文档做不同要求 划不同的分类 但一般来说 或者拿自己的经验说 大致可
  • loadrunner解决“服务器正在运行中”方法

    loadrunner解决 服务器正在运行中 方法 问题现象 这个问题在上家公司遇见过 今天无意中找到了解决办法 解决方法 打开任务管理器 找到这个进程 ThumbProcess exe 关掉这个进程即可解决
  • SQLi LABS Less-30

    第30关使用GET请求传递参数 在url中构造payload即可 后端源码中并没有做什么过滤 只是在参数两边添加了双引号 输入 1 and true a 页面正常显示 输入 1 and false a 页面空显示 由此可证明存在SQL注入
  • 如何使用 RVM 在 CentOS 和 RHEL 上安装 Ruby 2.1.8

    Warning Ruby 2 1 is reached to end of life and no more maintained Kindly use below tutorials to install latest version o
  • Linux 中的 /etc/mtab 文件是什么

    The etc mtab文件是Linux操作系统中的一个重要组成部分 它包含当前挂载的文件系统的记录 包括设备名称 挂载点和文件系统类型 各种 Linux 命令和实用程序使用此文件中的信息来确定已安装文件系统的状态 etc mtab 文件是
  • 在 Linux 上设置 HTTP 代理:基本指南

    在当今互联的世界中 网络在我们的数字生活中发挥着至关重要的作用 许多 Linux 用户必须处理的网络的一个重要方面是设置 HTTP 代理 本文将指导您完成在 Linux 系统上配置 HTTP 代理的过程 什么是 HTTP 代理 在深入了解该
  • Git Reset:带有示例的综合指南

    Git 是任何软件开发人员不可或缺的工具 它提供了管理和跟踪源代码更改的有效方法 在它的各种命令中 git reset 是一个功能强大的命令 它有助于浏览项目的历史记录 更改提交 甚至丢弃更改 尽管它很实用 但理解起来可能有点混乱 尤其是对
  • 关于将 WordPress 网站迁移到 HTTPS 您需要了解的一切

    Google has been pretty adamant in its efforts to make the web more secure First by proposing that web browsers should st
  • 如何使用 JavaScript forEach() 方法

    JavaScript forEach 方法对数组中的每个元素运行一次 例如 导航到数组并对每个数组元素执行任何操作 JavaScript forEach 方法在这种情况下很有用 JavaScript forEach 方法使用以下语法 arr
  • ZSH 和 BASH 有什么区别?

    当我们浏览类 Unix 操作系统的世界时 我们会遇到不同的 shell 环境 每个环境都有其独特的特性和功能 两种常用的 shell 环境是 Bash Bourne Again Shell 和 Zsh Z Shell 在本文中 我们将深入探
  • 如何在 Linux 中设置/创建环境和 Shell 变量

    Shell 是操作系统的命令解释器 处理在命令行中输入的命令 在 Linux 中广泛使用 变量就像指向特定数据的指针 并保存可以是任何值的特定值 用户可以在 Shell 的帮助下创建 删除或分配变量 当 Shell 运行时 存在三种类型的变