我正在编写一个简单的bash脚本来创建一个新目录。 cd进入$ dir的最后一行没有执行。如果我改变它以回显“Hello world”它可以工作,如果我将它改为cd ../,它就不起作用。脚本中的其他所有内容都按预期运行。
clear
read -p "Directory Name : " name
echo "Creating a directory called " $name
cd ~/Sites
mkdir $name
cd $name
答案 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
来源脚本,它应该可以使用。