OS X Bash 4 终端退出

OS X Bash 4 终端退出

我拥有最新的 OS X,运行标准终端应用程序,通过 homebrew 使用 bash 4.0

但是,如果我运行包含退出命令的脚本,它应该会退出脚本。但实际上会话结束了,我的选项卡也消失了。

我已更改设置以保持选项卡打开,但我的会话仍然结束,据我了解,这是非标准行为。

什么原因可能导致这种情况发生?

附注:这是我的 bash 提示符等

答案1

我用它运行. script

这意味着你执行脚本在你当前的 shell 中,因此退出会终止当前 shell。这是预期行为。

你应该

  1. 授予脚本执行权限(chmod u+x script)并运行./script,或者
  2. 调用它以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

相关内容