각 창에 대한 screenrc 하위 쉘

각 창에 대한 screenrc 하위 쉘

.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

다른 관련 질문을 만들기로 결정했습니다.명령이 실행된 후에도 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

애플리케이션이 완료되면 서브셸 대신 새 서브셸을 여는 것은 어떨까요?

screen -t htop bash -i -c "htop && bash"

관련 정보