我拥有最新的 OS X,运行标准终端应用程序,通过 homebrew 使用 bash 4.0
但是,如果我运行包含退出命令的脚本,它应该会退出脚本。但实际上会话结束了,我的选项卡也消失了。
我已更改设置以保持选项卡打开,但我的会话仍然结束,据我了解,这是非标准行为。
什么原因可能导致这种情况发生?
答案1
我用它运行
. script
这意味着你执行脚本在你当前的 shell 中,因此退出会终止当前 shell。这是预期行为。
你应该
- 授予脚本执行权限(
chmod u+x script
)并运行./script
,或者 - 调用它以
bash script
在新的 shell 进程中运行它。
答案2
这是我的脚本:
cat > doExitKeepShell.sh << EOF
#!/bin/bash
sleep 5
exit 0
EOF
及其可执行文件:
chmod u+x doExitKeepShell.sh
运行它然后标签就会关闭
$: . doExitKeepShell.sh
# wait 5 sec and window get closed
运行它并等待 5 秒钟以继续使用 shell
$: ./doExitKeepShell.sh
# wait 5 sec till prompt return ;-)
运行它并继续工作
$: . doExitKeepShell.sh &
[1] PID # <- this is your script in background
# Keep on working
如果你想转到脚本类型
$: %
如果脚本执行结束,你会看到类似这样的内容
$: %
-bash: fg: job has terminated
[1]+ Done ./doExitKeepShell.sh
如果你有多个后台作业,你可以输入
$: % PID