什么是Linux 中的 subshell
发布时间:2023-03-02 11:07:31 所属栏目:系统 来源:
导读:什么是 subshell
subshell 基本上就是提供了一个新的 shell,只提供用于快速准确运行数据库所需的程序。subshell 可以访问 “父 shell” 设置的全局变量,但是不能访问局部变量;subshell 对全局变量所作
subshell 基本上就是提供了一个新的 shell,只提供用于快速准确运行数据库所需的程序。subshell 可以访问 “父 shell” 设置的全局变量,但是不能访问局部变量;subshell 对全局变量所作
|
什么是 subshell subshell 基本上就是提供了一个新的 shell,只提供用于快速准确运行数据库所需的程序。subshell 可以访问 “父 shell” 设置的全局变量,但是不能访问局部变量;subshell 对全局变量所作的任何更改都只限于当前 subshell 会话内,不会传递到 “父 shell”中。 我们再通过几个实际案例来详解。首先看下面的脚本,一个显示变量 var 的单行代码: 奇怪,脚本并没有打印我设置的变量值。 Shell 脚本在子Shell中运行(默认情况下) 为什么会出现上面的情况呢?因为当你在运行 shell 脚本时,它会在自己的 shell 中运行。由于此 shell 源自于另一个 shell(设置变量和运行脚本的地方),因此称为子 shell(即 subshell)。 shell 脚本无法读取变量的值,因为它是一个局部变量,并且新创建的 shell 不知道这个值。如果你希望 subshell 可以访问这个变量,那么需要使用 export 命令将其转为全局变量。 但是新创建的 subshell 并不会打开一个新的窗口,它还是在当前窗口中,不过已经是一个新的 shell 了。 上面例子中我使用了一个变量来展示两个 shell(父 shell 和子 shell)的区别。当变量 var 没有导出时(使用 export),子 shell 是不能读取到的。 嵌套 subshell 你可以以相同的方式创建嵌套 subshell。变量导出后(export),它在随后创建的所有 subshell 中都可用。 你可以在 subshell 中修改导出后的变量的值,更改后的值也会传递给后续 subshell 中(因为变量本身是全局变量),但是当你退出 subshell 而回到原先的 shell 后,变量还是最初的原始值。 为什么呢?因为到处变量的值被复制到 subshell,它是一个副本(从 LHB 变为 HOC),在父 shell 中还是保留着原始值。 所以,需要记住的是:无法在 subshell 中更改父 shell 中的变量。无论该变量是否导出,在 subshell 中对变量做的修改不会影响到父 shell。 在当前 shell 中执行 shell 脚本 默认情况下,一个 shell 脚本是在自己的 shell(即 subshell)中执行的。但是你可以修改这个默认情况,即将 shell 脚本在当前 shell 中执行,通过 shell 内置命令 . 来实现。shell内置命令.来实现。1、如果你的电脑配置不高,那么建议使用windows系统自带的shell脚本,因为它的功能更强大,可以很方便的执行一些常用的命令。 (编辑:驾考网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 桌面环境 KDE Plasma 5.27.2 宣布:带来 70 多项改进,重点
- 微软不惜赠送礼品卡以说服 Windows 11/10用户使用 Edge浏览
- LegacyOS轻量发行版在历经9年之后迎来了2023版
- 更新微软 Edge浏览器 110.0.1587.56修复多起琥珀微软 Edge浏
- 微软公布新的免费 Windows 11 虚拟机 (2302)
- linux网络中五种不看不懂的IO模型,想成为大牛,不可不看
- Linux 6.3 内核已合并 XPad 驱动并将支持八位堂 Pro 2 有线
- Linux 只是一个内核 这是什么概念
- 据悉微软将在未来几周内推送 Windows 11 22H2“Moment 2”更
- 微软承认向不符合要求的 Windows 10 设备推荐升级 Windows
推荐文章
站长推荐
