linux - 在 subshell linux 中运行的脚本
问题描述
export x=4
脚本1.sh
#!/bin/bash
echo $x
在我当前的 shell 中运行 script1.sh 输出 4。
脚本2.sh
#!/bin/bash
cd ~
运行 script2.sh 不会将我的当前目录更改为主目录。
我知道脚本在与当前 shell 分离的子 shell 中运行,但是为什么 script1.sh 在我当前的 shell 中输出,而 script2.sh 更改子 shell 中的目录,退出然后我在当前 shell 中的工作目录保持不变?
我怎么知道哪些脚本会在我当前的 shell 中真正生效?
解决方案
export
传递给子shell 和您启动的其他进程的变量。它们作为“环境变量”对子进程可见。这就是 script1.sh 知道 $x 值的方式。
我怎么知道哪些脚本会在我当前的 shell 中真正生效?
对子 shell 中的环境所做的任何更改都不会影响您当前的 shell。
推荐阅读
- python - 如何动态和有条件地分配字典值?
- swift - 如果我想从 Codable 中排除某些属性,为什么这些属性必须是可选的?
- logparser - 在 Log Parser Lizard IIS 日志查询的 FROM 部分中使用变量
- java - 在获取所有链接时,忽略循环中的注销链接并继续在 selenium java 中导航
- jquery - 如何使用 Bootstrap-slider 将文本框输入与滑块链接起来
- java - 字符类中的元字符 (`[]`)
- excel - VBA 从 Excel 中的另一个工作簿复制数据
- twilio - 将语音邮件转发到电子邮件
- bash - 登录到另一台服务器并运行命令 - 使用脚本
- android - Android Studio - 配置图片资源