前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >11-1 环境中存储的是什么?

11-1 环境中存储的是什么?

作者头像
见贤思齊
发布2020-08-11 10:46:55
6610
发布2020-08-11 10:46:55
举报
文章被收录于专栏:初见Linux

本章将介绍下述命令:

  • printenv:打印 部分 或 全部 的环境信息。
  • set:设置 shell 选项。
  • export:将环境导出到随后要运行的程序中。
  • alias:为命令创建一个别名。

一、环境中存储的是什么?

0.2种数据类型

尽管 shell 在环境中存储了 2 种基本类型数据,但是在 bash 中,这 2 种类型基本上没有区别。这 2 种数据类型分别是 环境变量shell变量shell变量是由 bash 存放的少量数据环境变量就是除此之外的所有其它变量。除变量之外,Shell 还存储了一些编程数据,也就是别名和 shell 函数。本书第五章阐述了与别名有关的内容,而 shell 函数(主要与shell脚本有关)将会在本书的第四部分进行讲解。

1.检查环境

要了解环境中存储的内容,需要用到集成在 bush 中的 set 命令或 printenv 程序。 不同的是,set 命令会同时显示是 shell 变量和环境变量printenv 程序只会显示环境变量

(1)set命令
① 是什么?

主要是显示系统中已经存在的shell变量和环境变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。 (如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。set -x 是开启, set +x是关闭, set -o是查看 (xtrace), set去追中一段代码的显示情况。执行set -x后,对整个脚本有效。)

② 为什么?

set命令不能够定义新的shell变量。但是我们可以用set对新增的已有的变量进行一些操作,使之有了新的意义,如set可以把已有的的变量操作成环境变量等等。

③ 语法格式

set [选项]

代码语言:javascript
复制
'''
 功能: 显示 shell 变量 和 环境变量,以及设置shell变量的新变量值。

 参数: 。

 选项: 
 -a  标示已修改的变量,以供输出至环境变量。
 -b  使被中止的后台程序立刻回报执行状态。
 -C  转向所产生的文件无法覆盖已存在的文件。
 -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。
 -e  若指令传回值不等于0,则立即退出shell。
 -f   取消使用通配符。
 -h  自动记录函数的所在位置。
 -H : Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。
 -k  指令所给的参数都会被视为此指令的环境变量。
 -l  记录for循环的变量名称。
 -m  使用监视模式。
 -n  只读取指令,而不实际执行。
 -p  启动优先顺序模式。
 -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。
 -t  执行完随后的指令,即退出shell。
 -u  当执行时使用到未定义过的变量,则显示错误信息。
 -v  显示shell所读取的输入值。
 -x  执行指令后,会先显示该指令及所下的参数。
 +<参数>  取消某个set曾启动的参数。

 返回值: shell 变量 和 环境变量。
'''
④ 示例
Ⅰ.不带选项或参数
代码语言:javascript
复制
set

set命令不带选项或参数.png

若不带选项或参数,那么只会显示 shell 变量、环境变量以及任何已定义的 shell 函数

(2)printenv命令
① 语法格式

printenv [参数] [Name]

代码语言:javascript
复制
'''
 功能: 显示环境变量。

 参数: 
 ① Name : 可选参数,若指定 Name 参数,系统仅打印**指定Name的环境变量的值**。
 若未指定 Name 参数,则显示**所有变量的名称和值**,每行显示一个 Name =Value 序列。

 选项: 
 ① --null: 以空字符而非新行符结束每一输出行。
 ② --help: 显示此帮助信息并退出。
 ③ --version: 显示版本信息并退出。

 返回值: 查看环境变量,以及当前的shell,和其它一些常见的配置。
'''
② 示例
Ⅰ.显示所有环境变量

不指定 Name 参数。

代码语言:javascript
复制
printenv

printenv命令通过管道重定向到less.png

命令 printenv 也能够列出特定变量的值。以下显示指定变量的值。比如说:名为 USER 的变量,其名为 me。

Ⅱ .显示环境变量LANG的值
代码语言:javascript
复制
printenv LANG
Ⅲ . 要查找 MAILMSG 环境变量当前的设置
代码语言:javascript
复制
printenv USER

printenv命令列出指定变量的值.png

Ⅳ.显示环境变量 LANG 的值并以空字符而非新行符结束每一输出行
代码语言:javascript
复制
printenv --null LANG

printenv命令以空字符结束每一输出行.png

Ⅴ. 显示此帮助信息并退出
代码语言:javascript
复制
printenv --help

printenv显示此帮助信息并退出.png

Ⅵ.显示版本信息并退出
代码语言:javascript
复制
printenv --version

printenv显示版本信息并退出.png

(3)小技巧

由于环境的内容可能会比较冗长,所以最好将这两个命令的输出以管道形式重定向到 less 命令中

① printenv
代码语言:javascript
复制
printenv | less

printenv命令通过管道重定向到less.png

可以看到,输出结果是一系列的环境变量及其变量值。

② set
代码语言:javascript
复制
set | less

set命令通过管道重定向到less.png

别忘了按 q 是退出。

③ echo查看单个变量的值

若要查看单个变量的值,也可以使用 echo 命令。

代码语言:javascript
复制
echo $HOME

echo查看单个变量的值.png

(4)set与printenv的区别

  • 与 printenv 命令不同的是,set 命令的输出结果是按照字母顺序排列的
  • set命令和printenv命令都不能显示的一个环境元素是别名。要查看别名,需使用不带任何参数的 alias 命令。
代码语言:javascript
复制
alias

alias命令查看别名.png

2.一些有趣的变量

环境中包含了相当多的变量,尽管你所使用的环境与我这里的不尽相同,但也是会在你的环境中看到以下表中所示变量:

变量

说明

DISPLAY

运行图形界面环境时界面的名称。通常为 :O ,表示由 X 服务器生成的第一个界面。

EDITOR

用于文本编辑的程序名称。

SHELL

本机 shell 名称。

HOME

本机主目录的路径名。

LANG

定义了本机语言的字符集和排序规则。

OLD_PWD

先前的工作目录。

PAGER

用于分页输出的程序名称。通常设置为 /usr/bin/less 。

PATH

以冒号分隔的一个目录列表。当用户输入一个可执行程序的名称时,会查找该目录列表。

PS1

提示符字符串 1。定义了本机 shell 系统提示符的内容。在后面我们会学到,可以灵活地自定义该变量。

PWD

当前工作目录。

TERM

终端类型的名称。类 UNIX 系统支持很多种终端协议;此变量设定了本机终端模拟器使用的协议。

TZ

用于指定本机所处的时区。大多数类 UNIX 系统以协调世界时(UTC)来维护计算机的内部时钟,而显示的本地时间是根据本变量确定的时差计算出来的。

USER

用户名。

若某些变量无法在该表中找到也不要紧,因为这些变量会因发行版本的不同而有差异

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境中存储的是什么?
    • 0.2种数据类型
      • 1.检查环境
        • (1)set命令
        • (2)printenv命令
        • (3)小技巧
        • (4)set与printenv的区别
      • 2.一些有趣的变量
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档