Терминатор - выполнить скрипт и оставить командную строку активной

Я установил Terminator на свою Ubuntu и сохранил свой собственный макет с 5 терминальными окнами. Теперь я хочу выполнить скрипт оболочки в каждом окне. Проблема в том, что когда скрипт завершает работу, окно терминала становится бесполезным, так как больше нет командной строки. Т.е. я могу сохранить свой макет и поместить команду "top" в конфигурацию макета. В следующий раз, когда я запускаю Terminator «terminator -m -l mylayout &», он открывает мой макет, выполняет команду «top» в соответствующем суб-терминале, но если я нажимаю «q», чтобы выйти из «top», которого у терминала нет командная строка больше. Есть ли способ это исправить? И есть ли способ передавать команды в окна терминала внутри макета Terminator из отдельного окна терминала gnome?

5
задан 28 May 2014 в 00:59

3 ответа

Я также хотел запустить сессию Терминатора путем выполнения сценария и затем запуска оболочки удара. Это - то, как я сделал это:

В Предпочтениях Терминатора, на вкладке 'Layouts', выбирают желаемое Расположение слева и затем выбирают желаемый Терминал справа.

В поле 'Custom command', введите команду, сопровождаемую && bash || bash. Это будет инициировать новую оболочку удара, была ли команда/сценарий успешна или нет.

bash после && выполнится после успешного кода выхода (0). bash после || выполняется после ошибочного кода выхода (1-255).

Пример: Чтобы выполниться top и затем выйти в новую оболочку удара, введите это в поле 'Custom command'.

top && bash || bash

Другой пример: Скажите необходимость в некоторой поддержке для получения, день начался на правой ноге.

echo -e "\nWelcome! You are going to have a productive day!\n" && bash || bash

Затем для выполнения определенной команды, запускают разделитель с -l опция, сопровождаемая именем расположения.

terminator -l mylayout
0
ответ дан 28 May 2014 в 00:59
  • 1
    - 1, это не работает. та же ситуация как рассматриваемая – Jossef Harush 28 August 2018 в 17:09

Можно использовать пользовательский профиль для терминалов, Вы хотите сохранить открытыми после выходов команды. Посмотрите Профиль, вкладку Command в Prefs. У Вас могут или быть они, просто содержат открытый, пока Вы явно не закрываете их, или Вы можете сделать, чтобы они перезапустили команду (или удар или пользовательская команда.)

Другой прием, который я недавно изучил, должен использовать следующее в качестве Вашей пользовательской команды:

bash --rcfile <(echo ". ~/.bashrc && ls -l")

Это получает Ваш запуск удара, выполняет команду (ls), затем вносит Вас в том же процессе удара. Это немного лучше, чем практика лавирующего удара на конце команды.

1
ответ дан 28 May 2014 в 00:59
  • 1
    Действительно так. Сначала я имел к sudo apt-get remove .*:armhf, после которого dpkg удалил внешнюю архитектуру. Спасибо значительно. – fastsailing 15 December 2015 в 14:17

Я знаю, что это более старый вопрос, но я потратил некоторое время, пытаясь понять его сегодня, и ничего из этого не помогло мне. Я наткнулся на этот пост в блоге , который сделал именно то, что мне нужно. Так что я решил, что поделюсь.

По сути, вы добавляете этот фрагмент в свой .zshrc или .bashrc :

echo $INIT_CMD
if [ ! -z "$INIT_CMD" ]; then
    OLD_IFS=$IFS
    setopt shwordsplit
    IFS=';'
    for cmd in $INIT_CMD; do
        print -s "$cmd"  # add to history
        eval $cmd
    done
    unset INIT_CMD
    IFS=$OLD_IFS
fi

И затем вы устанавливаете его в качестве своей собственной команды:

env INIT_CMD="cd bla; export PYTHONPATH=/tmp; workon project" zsh

Это позволяет вам строить несколько команды вместе, а затем, когда вы завершите постоянную команду с помощью Ctrl + C , терминал останется открытым.

0
ответ дан 12 December 2019 в 22:33

Другие вопросы по тегам:

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