为什么此脚本不会更改目录

时间:2013-10-14 16:59:23

标签: bash scripting

好的简单bash脚本问题 - 不要笑。 我的脚本只是更改了目录:

echo on;
echo "running script";
CURRENT_DIR=.;
cd ..;
pwd;

我可以在echo中看到它更改目录但是当它完成时,我的终端仍在同一目录下。有什么提示吗?

1 个答案:

答案 0 :(得分:5)

运行bash脚本时,它会在自己的shell中运行。这意味着它拥有自己的shell环境,包括当前工作目录。如果您在脚本中cd,那么该脚本将在该新的当前目录中运行。但是当它完成后,你仍然在你的用户级shell所在的当前目录中,因为子shell没有触及它。

如果您想影响当前的shell环境,一种方法是使用.执行它:

. my_script

这就像运行sh my_script,但在当前用户shell的环境中运行。