Пользовательские команды терминатора вызывают закрытие оболочки

3593
hsiu

У меня есть профиль терминатора по умолчанию, настроенный для разделения окна на четыре квадранта при запуске, это работает хорошо.

Существует также опция «Пользовательская команда» для каждого терминала, которая, как я предполагал, означала что-то для запуска в терминале. Однако, если я добавлю что-то туда, команда выполнится, и терминал закроется (я уверен, что он выполняется, потому что я пытался echo hi > /tmp/hi, и этот файл действительно создан с "привет" в нем).

Как я могу заставить каждый терминал выполнять указанную мной команду, но впоследствии оставаться открытой?

РЕДАКТИРОВАТЬ: Kubuntu 14.04.1, со стандартным распределением терминаторов в надежном репо.

3

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

4
xzfc

There an When command exits: option in Preferences → Profiles → Command. If you want to open shell after command executes, append ; bash to custom command (e.g. echo hi > /tmp/hi; bash).

К сожалению, ни один из этих вариантов не работает, если я хочу, например, CD где-нибудь, так что я готов пойти. hsiu 9 лет назад 0
`CD /; у меня работает bash` Может быть, ваш `.bashrc` содержит команду cd? xzfc 9 лет назад 0
CD был плохим exa, [; e, поскольку большинство оболочек будут открываться в том же каталоге, из которого они были запущены, но дело в том, что он открывает оболочку _new_. Я чувствую, что должен быть способ сказать: «В этой оболочке выполните эти команды, как я их набрал в командной строке, а затем оставьте оболочку такой, какая она есть» hsiu 9 лет назад 0
Установите для пользовательской команды значение `CUSTOM_CMD = 1 bash` и добавьте [this] (http://pastebin.com/raw.php?i=s47xv6J4) к своему` .bashrc`. Это не совсем то же самое (команды не отображаются), но вы можете определить функции, переменные, параметры оболочки и т. Д. xzfc 9 лет назад 0
Хм, кажется немного хрупким, но это сработает для меня, возможно, измените ваш ответ на ваш последний комментарий. Спасибо! hsiu 9 лет назад 0
0
Ian Clark

Комментарий @ xzfc в его принятом ответе помог мне найти решение.


В каждом поле «Пользовательская команда» введите

INITIAL_TERMINATOR_WINDOW=1 bash 

Затем изнутри .bashrcвы можете проверить, установлена ​​ли переменная, и ответить соответственно:

if [ -n "$INITIAL_TERMINATOR_WINDOW" ]; then # Do something from an initial window else # Do something different when opening subsequent windows fi 

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