为什么bash脚本的最终目录cmd没有执行?

时间:2015-02-21 01:43:01

标签: bash

我正在编写一个简单的bash脚本来创建一个新目录。 cd进入$ dir的最后一行没有执行。如果我改变它以回显“Hello world”它可以工作,如果我将它改为cd ../,它就不起作用。脚本中的其他所有内容都按预期运行。

clear
read -p "Directory Name  : " name
echo "Creating a directory called " $name
cd ~/Sites
mkdir $name
cd $name

2 个答案:

答案 0 :(得分:2)

这是(我假设)您在交互式shell中编写的用于执行脚本的代码行:

./FooScript.sh

其解释方式与写作完全相同:

bash FooScript.sh

这会导致您的脚本在子shell中执行。您的子shell有自己的概念,它在文件系统中的位置。因此,您将子shell的目录更改为〜/ Sites / $ name目录,而不是交互式shell的目录。

有两种方法可以解决您的问题 - 尝试以两种方式之一再次执行您的脚本:

source FooScript.sh

. FooScript.sh

这样,您的脚本在与交互式shell相同的进程内运行,而不是作为新进程在子shell中运行。

答案 1 :(得分:1)

cd在脚本中有效,但它不会影响调用进程,即shell。

如果您使用. foo来源脚本,它应该可以使用。