关于bash脚本的说明

时间:2016-09-24 10:16:02

标签: linux bash shell

我是bash脚本新手。对许多人来说这可能是显而易见请耐心等待。

我有一个shell脚本如下:

#!/bin/bash
echo `pwd`
cd /home/foo/bar
echo `pwd`

假设我目前在dir:/ home / foo1

如果我执行上面的脚本,则打印:

/home/foo1
/home/foo/bar

但是一旦脚本完成执行,我已经看到它仍然保留在dir / home / foo1

我还看到一些脚本,其中有明确的命令使用'cd - '命令重置工作目录。

如果bash执行脚本中的所有行作为命令,为什么它会再次重置工作目录?

1 个答案:

答案 0 :(得分:1)

当您运行bash的交互式会话时,从中执行脚本(例如./myscript.sh),然后bash创建一个新的bash进程来执行脚本。最初,该进程获得与原始进程相同的环境的副本(例如当前工作目录或环境变量),但如果脚本以某种方式修改环境,则此更改仅影响新进程,而不影响原始进程。因此,当脚本退出时,您将返回保留原始环境的原始进程。因此无法从脚本中修改原始shell的当前目录。

作为旁注,以下一行

echo `pwd`

没有多大意义。您要么必须echo $PWD,要么只需pwd