.screenrc:
shell -${SHELL}
caption always "%n(%t) %= %{b}@%H[%l] : %{r}%c:%s"
termcapinfo xterm ti@:te@
termcap xterm 'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
startup_message off
screen -t server 0 rails s
screen -t spork 1 bundle exec spork
screen -t dev_log tail -f ./log/test.log
在上面的任何屏幕窗口中按 Ctrl+C 都会将其破坏。我希望每个都有子 shell,所以如果我按 Ctrl+C,我就退出到该子 shell。
现在我正在手动运行screen
并创建上面的所有窗口,重命名它们,效果很好。我可以终止任何窗口上的任何程序,执行其他操作并再次运行它。我想要实现的目标是仅使用一个命令即可运行该设置。
答案1
我决定创建另一个相关问题命令执行后如何保持Bash运行?忘记大局,专注于主要问题。按预期进行,最后提出了 3 种方法来实现目标:
我选择这样使用第三种:
〜/.run_screen:
#!/bin/bash
/bin/bash -i <<<"$*; exec </dev/tty"
〜/ .screenrc:
screen -t server 1 ${HOME}/.run_screen rails s
screen -t spork 2 ${HOME}/.run_screen bundle exec spork
screen -t dev_log 3 ${HOME}/.run_screen tail -f ./log/development.log
screen -t test_log 4 ${HOME}/.run_screen tail -f ./log/test.log
screen -t bash 0
答案2
当您的应用程序完成时,只需打开一个新的子 shell,而不是子 shell,怎么样?
screen -t htop bash -i -c "htop && bash"