【发布时间】:2017-01-26 08:38:33
【问题描述】:
当从命令行运行像 source script 或 . script 这样的 bash 脚本时,脚本中的所有行都会添加到 bash 的“源缓冲区”中,然后当前的命令 shell 会继续运行。停止执行是不可能的(除了中止 shell),使用 ctrl-C 只会中断当前命令,但随后会执行下一个命令。
这个缓冲区在哪里,是否可以清除它??
示例脚本:
echo A
sleep 10
echo B
sleep 10
echo C
sleep 10
echo D
在完成“源脚本”之后,有什么方法可以阻止它在“提交”后继续执行?
【问题讨论】:
-
请将您的脚本添加到您的问题中。
-
你为什么使用
source?如果您遇到这些问题,那么您可能应该将其作为一个单独的进程运行。 -
使用源代码是因为在脚本完成运行后如果需要可以使用 shell 中的变量很方便。不是我有问题,我只是对此感到好奇。我知道,每当出现 return 语句时,缓冲区的其余部分都会被丢弃,但是如果你已经获取了一个类似上面的脚本,并且你想在同一个 shell 中停止它(保留当前环境和变量)怎么办? )。
标签: bash shell command-line buffer