bash - 为什么这个脚本不改变目录

标签 bash scripting

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

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

我可以看到它在回显中更改目录,但是当它完成时,我的终端仍然位于同一目录。有什么建议吗?

最佳答案

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

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

. my_script

这类似于运行 sh my_script 但在当前用户 shell 的环境中运行。

关于bash - 为什么这个脚本不改变目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19365337/

相关文章:

bash - Gradle 无法识别我设置的 JAVA_HOME

linux - Shell 脚本以及如何避免在 Linux 机器上同时运行相同的脚本

Bash 脚本 : No such file or directory when defining variable via source vars. txt

linux - 如何将可执行脚本放在后台并在 x 分钟后将其唤醒

parsing - 如何使用Lua语言从磁盘加载Lua表?

python - 沉默 "No handlers could be found for logger "paramiko.transport""消息

bash - 捕获第 n 场 bash

linux - 解析 laSTLog 的输出?

linux - 检查命令行参数是否存在

Bash - 显示建议