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

use*_*946 6 command-line directory

我知道有一个简单的命令,但我正在尝试运行一个 file.sh,其中包含如下几行:

mkdir $filename
cd $filename
Run Code Online (Sandbox Code Playgroud)

文件执行,但在我开始的文件中结束。我知道有一个简单的关键字放在前面,使执行将我留在目录 $filename 中,但我无法在 Internet 上找到它。我之前找到过一次,但似乎不能再做一次。

小智 4

根据这个:

/sf/ask/17879011/

你可以使用运行你的脚本

. ./scriptname

它会使用您的 shell 运行 shell 脚本,而不是像通常发生的那样调用子 shell。

  • 请注意将任何“exit ...”替换为“return ...”,否则它将退出调用 shell,即您键入`的 shell。./scriptname` 中,关闭它。 (2认同)

Tum*_*oid 1

当您执行 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 }function. 您可以将其中任何一个放入您的~/.bashrc或中~/.bash_aliases