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

Bre*_*ako 2 bash scripting

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

echo on;
echo "running script";
CURRENT_DIR=.;
cd ..;
pwd;
Run Code Online (Sandbox Code Playgroud)

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

lur*_*ker 5

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

如果要影响当前的shell环境,可以通过以下方式执行它.:

. my_script
Run Code Online (Sandbox Code Playgroud)

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