bash wie --init-file in der tcsh

596
jm666

Das bash/screenSzenario:

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

das /path/to/screenrcenthält zum Beispiel

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 

zB es

  • startet eine screenSitzung im getrennten Modus
  • das screenAusführen der definiertescreenrc
  • von dem screenrc
    • Startet 3 verschiedene interaktive bashFenster
    • und jede der Bash führt den Inhalt des definierten aus init-file
    • und nachdem sie ausgeführt wurden, können Sie bashim interaktiven Modus fortfahren (!)

Am Ende bin ich also gekommen

  • eine freistehende screenSitzung
  • mit einem 3x bashim interaktiven Modus
  • und jeder von ihnen hat bereits einige Befehle ausgeführt (definiert in ihren init-file)

Wie erreicht man die gleiche Funktionalität mit dem tcsh?

1

2 Antworten auf die Frage

2
meuh

Sie müssen nicht tcshdie Arbeit erzwingen, screendie für Sie erledigt werden kann. Starten Sie einfach Ihre 3 Fenster:

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

Dann stopfe (dh "Typ") den Init-Befehl in jedes Fenster:

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' 
Das ist toll. Anstelle von `\ n` muss ich ^ M (` CTRL-V` `CTRL-M`) verwenden, andernfalls bin ich einfach in das Fenster gekommen:` source /path/to/window1.tcshinit \ n` (mit dem literal `\ n`) und der` source'-Befehl wird nicht ausgeführt. jm666 vor 8 Jahren 0
Ok, gut zu wissen. Ich habe "\ n" und "\ r" ausprobiert und beide schienen zu funktionieren. Ich bin mir nicht sicher, warum sie es nicht tun, vielleicht verschiedene Versionen der Tools. meuh vor 8 Jahren 0
1
Martin Tournoij

Soweit ich weiß, kann man das nicht, sowieso nicht direkt.

Was Sie tun können, ist erstellen win1.tcsh, win2.tcshetc. mit dem Inhalt:

echo Starting win1 setenv WINDOW 1 exec tcsh 

Rufe das als auf tcsh -c 'source win1.tcsh'und tcshrcmach in so etwas:

if ( $WINDOW == "1" ); then # My custom commands... endif