bash, как --init-файл в tcsh

497
jm666

bash/screenСценарий:

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

/path/to/screenrcсодержит, например ,

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 

например это

  • начинает screenсеанс в отдельном режиме
  • screenвыполните определенныеscreenrc
  • от screenrc
    • запускает 3 разных интерактивных bashокна
    • и каждый bash выполняет содержимое определенного init-file
    • и после их выполнения bashпродолжить в интерактивном режиме (!)

Итак, в конце я получил

  • отдельный screenсеанс
  • с 3х работает bashв интерактивном режиме
  • и каждая из них уже выполнила несколько команд (определенных в их init-file)

Как добиться такой же функциональности с tcsh?

1

2 ответа на вопрос

2
meuh

Вам не нужно заставлять tcshделать ту работу, которая screenможет сделать вместо вас. Просто запустите ваши 3 окна:

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

затем вставьте (то есть "type") команду init в каждое окно:

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' 
Это замечательно. Просто вместо `\ n` я должен использовать ^ M (` CTRL-V` `CTRL-M`), иначе я просто попал в окно:` source /path/to/window1.tcshinit \ n` (с литерал `\ n`), а команда` source` не выполняется. jm666 8 лет назад 0
хорошо, приятно знать Я пробовал `\ n` и` \ r`, и они оба, казалось, работали. Я не уверен, почему они не для вас, возможно, разные версии инструментов. meuh 8 лет назад 0
1
Martin Tournoij

As far as I know you can't, not directly anyway.

What you can do is create win1.tcsh, win2.tcsh, etc. with the contents:

echo Starting win1 setenv WINDOW 1 exec tcsh 

Invoke that as tcsh -c 'source win1.tcsh', and in your tcshrc do something like:

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

Похожие вопросы