bash como --init-file no tcsh

1

O cenário bash/screen :

screen -dmS sessionname -c /path/to/screenrc

o /path/to/screenrc contém, por exemplo

screen -t windowtitle1 bash --init-file /path/to/window1.bashinit
screen -t windowtitle2 bash --init-file /path/to/window2.bashinit
screen -t windowtitle3 bash --init-file /path/to/window3.bashinit

por exemplo. isso

  • inicia uma sessão screen no modo desanexado
  • o screen executa o screenrc definido
  • do screenrc
    • inicia 3% interativas bash windows
    • e cada um o bash executa o conteúdo do init-file definido
    • e depois de executá-las, o bash continua no modo interativo (!)

Então, no final eu peguei

  • uma screen sessão desanexada
  • com 3x executando bash no modo interativo
  • e cada um deles já executou alguns comandos (definidos em seus init-file )

Como conseguir a mesma funcionalidade com o tcsh ?

    
por jm666 19.10.2015 / 09:45

2 respostas

2

Você não precisa forçar tcsh a fazer o trabalho que screen pode fazer por você. Basta iniciar suas 3 janelas:

cat <<\! >/path/to/screenrc
screen -t windowtitle1 tcsh
screen -t windowtitle2 tcsh
screen -t windowtitle3 tcsh
!
screen -dmS sessionname -c /path/to/screenrc

depois escreva (ou seja, "digite") o comando init em cada janela:

screen -p windowtitle1 -X stuff 'source /path/to/window1.tcshinit\n'
screen -p windowtitle2 -X stuff 'source /path/to/window2.tcshinit\n'
screen -p windowtitle3 -X stuff 'source /path/to/window3.tcshinit\n'
    
por 19.10.2015 / 11:42
1

Tanto quanto eu sei, você não pode, não diretamente de qualquer maneira.

O que você pode fazer é criar win1.tcsh , win2.tcsh , etc. com o conteúdo:

echo Starting win1
setenv WINDOW 1
exec tcsh

Invoque isso como tcsh -c 'source win1.tcsh' e no seu tcshrc faça algo como:

if ( $WINDOW == "1" ); then
   # My custom commands...
endif
    
por 19.10.2015 / 10:32