Esta é uma explicação mais profunda para a questão.
Minha meta é:
Inicie um shell bash configurado com um conjunto de variáveis de ambiente, mas em execução em segundo plano.
Lançar cerca de cincotelacomandos no shell bash, cada um executando seus próprios comandos, mas usando as variáveis de ambiente definidas no shell bash. Os
screencomandos devem ser todos organizados na janela bash, de preferência lado a lado.Acesse o shell bash mais tarde, com todos os
screencomandos exibidos.Feche o shell bash e o associado
screenquando terminar.
Responder1
Bem, depois de algum tempo na sua pergunta, há algumas observações:
linha 2:todos os comandos devem ser organizados na janela bash, de preferência lado a ladonão é possível, como quando separado,não há janelas.
Então, quando você reconectar, sempre verá apenas umpseudo-tty.
Mas para fazer aproximadamente o que foi solicitado, tente o seguinte:
Primeiro crie um arquivo RC digitando: cat >screenRcTestcom o seguinte:
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
Do que preparar um runinvólucro como:
screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest
isso executará uma nova sessão de tela em segundo plano, se ainda não existir.
Para construirlado a ladoapresentação, prepare outro script de shell comocat >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
e não se esqueça chmod +x screenSplitTest.
Finalmente execute ocomando de exibiçãocomo:
xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest
Isso abrirá uma nova janela com apenas um basharquivo pronto.
Nissointernobash, clique simplesmente:
./screenSplitTest
Isso dividirá sua janela e deixará você pronto novamente, em sua sessão bash.

Digite agora:
echo $MyVariable
Test
Então você verá como a variável de ambiente foi passada para o bash filho.
Editar adição:
Depois de fazer tudo, você poderá acertar o seguinte em seuinternofesta:
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH
Então você pode se desconectar digitando: Ctrl-A dda próxima vez que você executar xtermcom os mesmos argumentos e geometria, o script screenSplitTest será iniciado automaticamente.
Editar 2
E agora, você pode até instalar isso trapno seu .bashrc, usando MyVariablepara garantir que o bash seja filho detelaRcTesttela (depois de passar screenSplitTestpara um arquivo oculto em $HOME/.screenSplitTestfor constância):
[ "$TERM.$MyVariable" == "screen.Test" ] && \
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
Responder2
Que eu saiba, você não pode agrupar instâncias de tela, mas pode agrupar instâncias do tmux. O que você pode fazer é criar um arquivo rc para as configurações do ambiente compartilhado e, em seguida, carregá-lo em cada um dos seus 5 shells bash usando bash --rcfile <your file here>.
Os shells bash seriam iniciados iniciando o tmux e, quando dentro, executar algum comando para criar uma nova divisão (por exemplo Ctrl+b % para uma divisão vertical, usando configurações padrão) para cada instância do bash.


