每个窗口的 screenrc 子 shell

每个窗口的 screenrc 子 shell

.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 种方法来实现目标:

  1. 解决方法这还不错
  2. 便携的(POSIX)
  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"

相关内容