执行 .sh 并结束于不同的目录

执行 .sh 并结束于不同的目录

我知道有一个简单的命令可以做到这一点,但我试图运行一个 file.sh,其中包含如下行:

mkdir $filename
cd $filename

文件执行成功,但最后还是回到了文件开头。我知道在前面放一个简单的关键字,可以让执行结果停留在目录 $filename 中,但我在互联网上找不到它。我以前找到过一次,但似乎再也找不到了。

答案1

根据这个:

https://stackoverflow.com/questions/255414/why-doesnt-cd-work-in-a-bash-shell-script

你可以使用以下方式运行脚本

. ./scriptname

它将使用你的 shell 运行 shell 脚本,而不是像通常那样调用子 shell。

答案2

执行 shell 脚本相当于在另一个 shell 中运行它。执行./script.sh相当于sh script.sh,这可能会更好地为您打开问题。

要在当前 shell 上下文中运行脚本,您需要使用source或其别名.,即source script.sh. script.sh

对于这种简单操作,最简单的解决方案是创建别名而不是脚本,即。alias mkcd='mkdir dir; cd dir'或者如果您需要运行任意目录,您可以执行mkcd() { mkdir $1; cd $1 }函数。您可以将其中任何一个放入~/.bashrc或中~/.bash_aliases

相关内容