
이것은 질문에 대한 더 깊은 설명입니다.
내 목표는 다음과 같습니다
환경 변수 세트로 구성된 bash 쉘을 시작하지만 백그라운드에서 실행됩니다.
5개 정도 발사화면bash 셸의 명령은 각각 자체 명령을 실행하지만 bash 셸에 설정된 환경 변수를 사용합니다. 명령 은
screen
모두 bash 창에 배열되어야 하며 가급적이면 타일로 배열되어야 합니다.나중에 모든 명령이 표시된 bash 쉘을 호출하십시오
screen
.screen
완료되면 bash 쉘과 관련 쉘을 닫습니다 .
답변1
글쎄, 귀하의 질문에 대해 얼마 후 몇 가지 관찰이 있습니다.
라인 2:명령은 모두 bash 창에 배열되어야 하며 바람직하게는 타일로 배열되어야 합니다.분리된 경우와 같이 불가능합니다.창문이 없어.
따라서 다시 연결하면 항상 하나만 표시됩니다.가짜 tty.
그러나 요청한 내용을 대략적으로 수행하려면 다음을 시도하십시오.
cat >screenRcTest
먼저 다음을 입력하여 RCfile을 만듭니다.
setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i
래퍼를 다음과 같이 준비하는 것보다 run
:
screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest
아직 존재하지 않는 경우 백그라운드에서 새 화면 세션이 실행됩니다.
건축용타일을 붙인프레젠테이션, 다음과 같이 다른 쉘 스크립트를 준비하십시오.cat >screenSplitTest
#!/bin/bash
while read line ;do
screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof
그리고 잊지 마세요 chmod +x screenSplitTest
.
마지막으로 실행표시 명령처럼:
xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest
그러면 준비만 있는 새 창이 열립니다 bash
.
이에안의bash, 간단히 누르십시오 :
./screenSplitTest
이렇게 하면 창을 분할하여 bash 세션에서 다시 준비할 수 있습니다.
지금 입력하세요:
echo $MyVariable
Test
따라서 환경 변수가 하위 bash에 어떻게 전달되는지 확인할 수 있습니다.
추가 수정:
모든 작업을 수행한 후에는 다음을 칠 수 있습니다.안의세게 때리다:
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH
따라서 입력하여 연결을 끊을 수 있습니다. Ctrl-A d
다음에 동일한 인수와 기하학을 사용하여 실행할 때보다 xterm
screenSplitTest 스크립트가 자동으로 시작됩니다.
편집 2
이제 bash가 다음의 하위인지 확인하기 위해 이것을 사용하여 trap
에 설치할 수도 있습니다..bashrc
MyVariable
스크린Rc테스트화면( 예를 screenSplitTest
들어 숨겨진 파일로 이동한 후 $HOME/.screenSplitTest
):
[ "$TERM.$MyVariable" == "screen.Test" ] && \
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
답변2
내가 아는 바로는 화면 인스턴스를 타일링할 수 없지만 tmux 인스턴스는 타일링할 수 있습니다. 당신이 할 수 있는 일은 공유 환경 설정을 위한 rc 파일을 생성한 다음 bash --rcfile <your file here>
.
bash 셸은 tmux를 시작하여 시작되고 내부에서 일부 명령을 실행하여 각 bash 인스턴스에 대해 새 분할을 생성합니다(예: 표준 설정을 사용하여 수직 분할의 경우 Ctrl+b %).