[转帖]我偷偷学了这 5 个命令,打印 Linux 环境变量那叫一个“丝滑”!

偷偷,命令,打印,linux,环境变量,一个 · 浏览次数 : 0

小编点评

**环境变量** 在基于 Linux 和 Unix 的系统中,环境变量是一组动态命名值,用于在 shell 或子 shell 中启动的应用程序使用。 **格式** 环境变量遵循 `=`=`` 的格式,等号两边无空格,可以用冒号分隔多个变量值。 **常用命令** * `printenv`:显示所有环境变量的值。 * `env`:显示所有环境变量,但过滤掉空值。 * `declare`:显示已经声明的环境变量。 * `set`:显示所有环境变量,但只显示当前 shell 中的变量。 * `echo`:显示一个或多个变量的值。 **示例** ```bash # 显示所有环境变量 printenv # 显示所有环境变量,但过滤掉空值 env # 显示已经声明的环境变量 declare # 显示所有环境变量 declare # 显示所有环境变量,只显示当前 shell 中的变量 set # 显示一个变量的值 echo $HOME ``` **总结** 环境变量是存储在系统中的动态值,用于在 shell 或子 shell 中访问和设置变量值。可以使用 `printenv`、`env`、`declare`、`set` 和 `echo` 命令查看和设置环境变量。

正文

https://xie.infoq.cn/article/2acfef8d543517619c9202e4e

 

一、概述

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

 

 
KEY=valueKEY="NewVALUE"KEY=valueA:valueB
 
 
 
复制代码
 

 

在 Linux 中有多种方法可以列出或显示环境变量,我们可以使用 env、printenv、declare 或 set 命令列出系统中的所有变量。

 

在本教程中,我们将给大家分享如何在 Linux 中列出环境变量。

二、环境变量必知的规则

  • 环境变量遵循<NAME>=<VALUE>格式。

  • 等号=两边没有空格

  • 可以通过使用冒号分隔单个变量来指定多个值:``<NAME>=<VALUE1>:<VALUE2>:<VALUE3>`

  • 环境变量区分大小写。

  • 习惯上,环境变量名称设置为大写。

  • Shell 变量与环境变量不同。Shell 变量仅适用于当前 shell,不适用于任何子进程。

三、列出环境变量

3.1 printenv

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

 

我们执行命令看下效果。

 

 
printenv
 
 
 
复制代码
 

 

执行结果:

 

 

查看 HOME 环境变量的值:

 

 
printenv HOME
 
 
 
复制代码
 

 

执行结果:

 

 

我们注意到HOME是执行printenv命令后的变量:

 

 

所以我们想要查看什么参数的时候,直接printenv后加上其变量即可。

 

比如:

 

 
printenv USER
 
 
 
复制代码
 

 

执行结果:

 

 

那么这些参数到底是什么意思呢?我们选择几个常用的解释一下。

 

  • USER:当前登录的用户。

  • HOME:当前用户的主目录。

  • EDITOR:用作默认文件编辑器。

  • SHELL:当前用户的 shell 路径,例如 bash 或 zsh。

  • LOGNAME:此处显示当前用户的名称。

  • PATH:运行命令时,这是要搜索的目录列表。

  • LANG:区域设置的当前设置。

  • TERM:当前终端仿真。

  • MAIL:当前用户的邮件保存在此位置。

3.2 env

env 命令效果和printenv是一样的,显示的内容也是完全一样的:

 

 
env
 
 
 
复制代码
 

 

执行结果:

 

 

唯一区别的是过滤的参数不一样,printenv 是后面直接加变量名进行过滤,但是 env 命令需要结合 grep 进行过滤,举个例子:

 

 
env | grep HOME
 
 
 
复制代码
 

 

执行结果:

 

3.3 declare

declare 命令显示的是已经声明的环境变量:

 

 
declare
 
 
 
复制代码
 

 

执行结果:

 

 

这个时候我们怎么去过滤呢?

 

执行以下命令即可:

 

 
export -p | grep HOME
 
 
 
复制代码
 

 

执行结果:

 

3.4 set

set 命令看字面像是设置变量的,不过它确实可以显示出系统的环境变量,注意 set 显示当前 shell 中所有 shell 变量的名称和值:

 

 
set
 
 
 
复制代码
 

 

执行结果:

 

 

这里不止那么多,文章篇幅的原因,不全部截图出来。

 

我们也可以结合grep命令进行过滤:

 

 
set | grep HOME
 
 
 
复制代码
 

 

执行结果:

 

3.5 echo

echo 命令后加 $符号再加上变量也可以直接打印出环境变量:

 

 
echo $HOME
 
 
 
复制代码
 

 

执行结果:

 

 

这个就比较简单了,不过前提是你得知道有哪些变量。

总结

打印环境变量这个操作在运维过程中经常用到,本文列举了 5 个常用的打印环境变量的命令,它们分别是printenvenvdeclaresetecho,希望本文对您有所帮助,有任何问题,欢迎在下方评论区与我讨论。

与[转帖]我偷偷学了这 5 个命令,打印 Linux 环境变量那叫一个“丝滑”!相似的内容:

[转帖]我偷偷学了这 5 个命令,打印 Linux 环境变量那叫一个“丝滑”!

https://xie.infoq.cn/article/2acfef8d543517619c9202e4e 一、概述 在基于 Linux 和 Unix 的系统中,环境变量是一组动态命名值,存储在系统中,供在 shell 或子 shell 中启动的应用程序使用。简单来说,环境变量是具有名称和关联值的

[转帖]我所理解的SRE、PE和应用运维

https://www.cnblogs.com/zhangxinglong/p/14756366.html SRE这个概念我个人印象中应该14年下半年左右听到的,当时只知道是Google对运维岗位定义,巨牛逼的一个岗位,在网上查到SRE是叫网站稳定工程师,只要是保障稳定为主,其他就没有更深的意识了。

[转帖]我63岁,夫妻俩退休工资15000,回农村养老不到一年,落荒而逃

[一种声音]我63岁,夫妻俩退休工资15000,回农村养老不到一年,落荒而逃 xilei 发布于 2023-2-14 9:36:00 我63岁,夫妻俩退休工资15000,回农村养老不到一年,我们落荒而逃 1、 我是老袁,江西人,一个儿子在上海工作,儿子和儿媳都有不错的单位。孙子住寄宿学校,也不需要我

[转帖]我所知道的线程池

https://bigbully.github.io/%E7%BA%BF%E7%A8%8B%E6%B1%A0 线程池其实或多或少都用过,不过这是我第一次阅读它的源码,包括源码附带的非常详尽的注释。发现我之前对于线程池的理解还是很浅薄的。 其实从ThreadPoolExecutor.java顶部200

[转帖]为什么我Redis中key惊现“乱码”?

为什么Redis中key会惊现“乱码”? 最近在做一个秒杀项目,过程中大量应用到了redis。 而我在用ElasticJob进行数据化初始化到Redis数据库时发现这些key都出现了一段前缀“乱码”。 数据结构为Hash,可以观察到hashkey也带有前缀“乱码” 这究竟是怎么回事呢?原来问题出在这

[转帖]Redis:我是如何与客户端进行通信的

江湖上说,天下武功,无坚不摧,唯快不破,这句话简直是为我量身定制。 我是一个Redis服务,最引以为傲的就是我的速度,我的 QPS 能达到10万级别。 在我的手下有数不清的小弟,他们会时不时到我这来存放或者取走一些数据,我管他们叫做客户端,还给他们起了英文名叫 Redis-client。 有时候一个

[转帖]聊聊我对 GraphQL 的一些认知

https://www.modb.pro/db/139451 作者简介:haohongfan 是 Apache Dubbogo Committer,目前就职于京东,擅长高并发架构设计。公众号 HHFCodeRv 会定期发布原创文章,包括源码分析、业务思考、架构设计等。推荐大家关注 每隔一段时间就能看

[转帖]老板让我在Linux中使用traceroute排查服务器网络问题,幸好我收藏了这篇文章!

https://bbs.huaweicloud.com/blogs/386325 【摘要】 traceroute 命令是一个有用且易于运行的网络诊断工具,本文给大家介绍了12个traceroute 命令示例,希望本文能够对您使用traceroute 命令有所帮助,如果有问题可以在下方评论区与我讨论!

[转帖]谁动了我的 CPU 频率 —— CPU 性能之迷 Part 2

https://www.modb.pro/db/555819 目录: 为何有本文 什么是动态 CPU 频率 什么是 p-state Linux CPU 性能伸缩(CPU performance scaling) 非 Intel CPU 的 boost 的 sysfs 文件接口 performance

[转帖]实战瓶颈定位-我的MySQL为什么压不上去

https://plantegg.github.io/2023/06/20/%E5%AE%9E%E6%88%98%E7%93%B6%E9%A2%88%E5%AE%9A%E4%BD%8D-%E6%88%91%E7%9A%84MySQL%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8E%