在UNIX命令行上运行的Bash shell脚本不会更改当前的shell环境

时间:2012-03-18 22:00:13

标签: bash

  

可能重复:
  Why doesn't “cd” work in a bash shell script?

我正在尝试从我的工作目录'/ c / My_Objective'中的UNIX命令行执行bash shell脚本'./go_cd'。我希望脚本所做的就是更改为新目录'/ c / My_Objective / project'。脚本输出表明目录已更改为'/ c / My_Objective / project,但是当脚本完成执行并返回到当前命令行时,目录仍处于'/ c / My_Objective'。为什么目录没有改变?

下面是我用作测试的简单Bash shell脚本。

#!/bin/bash
## current directory is '/c/My_Objective'
pwd
cd project
## new directory should now be '/c/My_Objective/project'
pwd

有没有办法获取命令,即'cd',在新脚本进程中执行会被传递回原始进程,在那里我开始'go_cd'脚本执行?

温斯顿

1 个答案:

答案 0 :(得分:6)

子进程不会影响父进程。如果希望shell脚本修改现有shell,则必须由现有shell运行,如:

. myscript.sh