每个窗口的 screenrc 子 shell

paw*_*318 5 bash gnu-screen

.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
Run Code Online (Sandbox Code Playgroud)

在上面的任何屏幕窗口中按 Ctrl+C 都会将其破坏。我希望每个都有子 shell,所以如果我按 Ctrl+C,我就退出到该子 shell。

现在我正在screen手动运行并创建上面的所有窗口,重命名它们,效果很好。我可以终止任何窗口上的任何程序,执行其他操作并再次运行它。我想要实现的目标是仅使用一个命令即可运行该设置。

paw*_*318 3

我决定创建另一个相关问题如何在命令执行后保持 Bash 运行?忘记大局,专注于主要问题。按预期进行,最后提出了 3 种方法来实现目标:

  1. 解决方法还不错
  2. 便携式(POSIX)
  3. 简单的

我选择这样使用第三种:

〜/.run_screen:

#!/bin/bash
/bin/bash -i <<<"$*; exec </dev/tty"
Run Code Online (Sandbox Code Playgroud)

〜/ .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  
Run Code Online (Sandbox Code Playgroud)