如何以及为什么使用$ SHLVL变量

Linux壳级别可能会变得复杂。$ shlvl可以帮助

$ SHLVL变量告诉您​​您有多少壳。如果您对此感到困惑,那么值得一开始。

$ SHLVL Linux命令的屏幕截图正在使用

什么是外壳?

一种贝壳采用命令并将这些命令提供给基础操作系统以进行执行。在大多数Linux系统上,Shell程序称为bash(再次伯恩外壳),但是还有其他,包括C外壳(TCSH)和科恩壳(ksh)。

如何访问Linux Shell

通常,作为用户,您可以通过A Shell程序进行交互末端仿真程序,例如x -term,,,,Konsole,或gnome末端。

如果您运行Windows Manager,例如开箱或桌面环境,例如侏儒或KDE,您会从菜单或破折号中找到终端模拟器。在许多系统上,快捷方式Ctrl+Alt+T打开一个终端窗口。

另外,您可以切换到另一个TTY(TeletyPewriter),该TTY可直接访问命令行壳。您可以通过按下来做到这一点Ctrl+Alt+F1或者Ctrl+Alt+F2

什么是外壳水平?

当您在外壳中运行命令时,它将在外壳级别运行。在外壳中,您可以打开另一个外壳,这使其成为打开它的外壳的子壳。因此,母壳被视为1级外壳,并且子外壳为2级外壳。

如何显示外壳级别

告诉您正在运行的外壳级别的方法是使用$ SHLVL变量。要查看您当前正在运行的外壳级别,请键入以下内容:

Echo $ shlvl

当您在终端窗口中运行上述命令时,返回的结果为2。但是,如果您使用tty运行相同的命令,则结果为1贝壳。

为什么这样?您正在运行的桌面环境在外壳顶部运行。该外壳是1级。您从该桌面环境打开的任何终端窗口都是打开桌面环境的外壳的孩子。因此,外壳级别不能以2个以外的任何数字启动。

如何创建子壳

测试壳和子壳概念的最简单方法如下。打开终端窗口,然后输入以下内容:

Echo $ shlvl

当您从终端窗口运行此命令时,最小外壳级别为2。

在终端窗口中键入以下内容:

sh

SH命令运行一个交互式外壳。这意味着您在外壳或子壳中使用外壳。

如果您再次键入此内容:

Echo $ shlvl

您会看到外壳级别设置为3。从子壳中运行sh命令会打开子壳的子壳,因此外壳级别在4级。

为什么壳牌级别很重要?

当思考脚本中变量的范围时,壳级别很重要。对于一个简单的示例:

狗= Maisie
回声$狗

如果您在外壳中运行上述命令,则该单词Maisie显示到终端窗口。

要打开新的外壳,请键入以下内容:

sh

运行此命令时,您会发现什么都没有返回:

回声$狗

那是因为$ dog变量仅在壳级别2上可用回声$狗再次,这个词Maisie再次显示。

还值得考虑壳内全局变量的行为。

打开一个新的终端窗口,然后输入以下内容:

出口狗= Maisie
回声$狗

不出所料,这个词Maisie显示。接下来,打开一个子壳和类型回声$狗再次。这次,这个词Maisie即使您处于子壳中,显示也是如此。这样做的原因是导出命令使$ dog变量全局。即使您使用“导出命令”,更改子壳中的$ dog变量也不会影响其父壳。

在编写脚本时,了解您正在工作的外壳级别具有重要意义。本文中的示例很简单,但是一个shell脚本调用另一个shell脚本又调用另一个shell脚本是很常见的。所有这些都在不同的层面上运行。知道外壳水平很重要。

此页面有用吗?