.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を押すと、そのウィンドウが削除されます。それぞれにサブシェルがありたいので、Ctrl + Cを押すとそのサブシェルで終了します。
今すぐ手動で実行しscreen
、上記のすべてのウィンドウを作成して名前を変更すると、うまく動作します。任意のウィンドウで任意のプログラムを終了し、他のタスクを実行して再度実行できます。私が達成したいのは、1つのコマンドで設定を実行することだけです。
答え1
別の関連質問を作成することにしました。コマンドが実行された後でもBashを実行し続けるには?大きな絵は忘れて、主な問題に集中してください。期待どおりに作業し、ついに目標を達成するための3つの方法を考えました。
私は次のように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
アプリケーションが完了したら、サブシェルの代わりに新しいサブシェルを開くのはどうですか?
screen -t htop bash -i -c "htop && bash"