首页 > 解决方案 > 在 subshel​​l 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 中真正生效?

标签: linuxbashshell

解决方案


export传递给子shell 和您启动的其他进程的变量。它们作为“环境变量”对子进程可见。这就是 script1.sh 知道 $x 值的方式。

我怎么知道哪些脚本会在我当前的 shell 中真正生效?

对子 shell 中的环境所做的任何更改都不会影响您当前的 shell。


推荐阅读