2

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

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

我可以看到它在 echo 中更改了目录,但是当它完成时,我的终端仍然在同一目录中。有小费吗?

4

1 回答 1

5

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

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

. my_script

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

于 2013-10-14T17:03:38.823 回答