Я пытаюсь создать bash-скрипт, который (1) создает сеанс экрана, (2) запускает несколько окон внутри него, (3) создает собственный сценарий среды в каждом из них, (4) меняет свой каталог на каждый из них.

У меня есть скрипт, который вроде работает, но когда я подключаюсь к получающемуся экранному сеансу и запускаю vim, размер терминала определяется неправильно (например, 80x24 или что-то маленькое). Кроме того, чтобы выйти из получающихся оболочек, я не могу просто нажать CTRL-D, мне нужно нажать CTRL-D и затем ENTER по некоторым причинам. Кто-нибудь знает, как это исправить? Я попытался запустить команду «сброс» внутри каждого, но это также, похоже, не работает.

#!/bin/bash
ENVSH=/path/to/environment.sh
SESSION=development
SRCDIR=/work/src

# screen 1: dev
screen -S $SESSION -d -m -t dev
screen -S $SESSION -X exec /bin/bash
screen -S $SESSION -X stuff "source $ENVSH^M"
screen -S $SESSION -X stuff "cd $SRCDIR^M"

# screen 2: test
screen -S $SESSION -X screen -t test
screen -S $SESSION -X exec /bin/bash
screen -S $SESSION -X stuff "source $ENVSH^M"
screen -S $SESSION -X stuff "cd $SRCDIR^M"

# screen 3: vmtouch
screen -S $SESSION -X screen -t vmtouch
screen -S $SESSION -X exec /bin/bash
screen -S $SESSION -X stuff "source $ENVSH^M"
screen -S $SESSION -X stuff "cd $SRCDIR^M"

# screen 4: misc
screen -S $SESSION -X screen -t misc
screen -S $SESSION -X exec /bin/bash
screen -S $SESSION -X stuff "source $ENVSH^M"
screen -S $SESSION -X stuff "cd $SRCDIR^M"

# connect to it
screen -RD $(screen -ls | grep -o -P "\d+\.$SESSION")

ОБНОВЛЕНИЕ: я понял это. Очевидно, что строки "screen -S $ SESSION -X exec /bin /bash" не нужны - это вызывало запуск 2-й оболочки внутри той по умолчанию, которая запускается на экране.

0