2

Я хочу иметь возможность получить скрипт (запускается при запуске), чтобы открыть терминал konsole .
Когда он открывается, он должен сделать некоторые постоянные вещи (например, изменить каталог и исходный bashrc) и запустить долго работающую программу.
Если программа дает сбой или я захожу и <ctrl+c> ее, это значит начать принимать команды со стандартного ввода (например, «up-enter», чтобы повторить попытку, как если бы она была интерактивной все время).

Я пробовал так много вещей, чтобы заставить его работать (в настоящее время я просто пытаюсь заставить его работать с ls и вернуться к интерактивному завершению);

konsole -e ls
konsole --hold ls
konsole -e /bin/bash -c ls
konsole --hold -e "/bin/bash -c ls"
konsole -e "/bin/bash -i -c ls"
konsole -e /bin/bash -i -c ls
konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"

echo ls > /tmp/konsolebash
konsole -e "/bin/bash -i --rcfile /tmp/konsolebash"

Это связано с цитатами? Разве я не должен их использовать, должен ли я что-то избегать?
Я даже хотел попробовать bash?
У меня заканчиваются идеи, но я надеюсь, что это даже достижимо (но, надеюсь, не что-то смущающее простое, что я пропустил).

Я буду одобрять ответы, в которых успешно используются другие эмуляторы терминала, если проблема, в частности, связана с konsole (но поскольку вопрос касается именно konsole я не думаю, что смогу дать вам сочные галочки)

1 ответ1

3

Благодаря комментариям @ n.st я сделал этот вкладыш:

konsole -e /bin/bash --rcfile <(echo "cd /;ls;echo hi | less")

Это просто более короткая версия без tmpfiles, использующая замену процесса bash для следующего;

echo "cd /;ls;echo hi | less" > /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash

Который будет запускать некоторые команды, отображать их, изменять среду, запускать долго работающую программу (less) и когда она закончится (:q) будет интерактивной.
Так что замените cd /;ls;echo hi | less (демонстрация) с вашим сценарием.

Нет истории, но, по крайней мере, вы сейчас находитесь в правильном каталоге и у вас есть переменные окружения, которые вы, возможно, захотите настроить.


В основном так же, как моя предыдущая попытка;

konsole -e "echo ls > /tmp/konsolebash;/bin/bash -i --rcfile /tmp/konsolebash"

за исключением того, что запись файла находится вне выполнения konsole , я убрал флаг -i и параметры выполнения не находятся в одном блоке кавычек


К сожалению, ключ --rcfile приводит к тому, что ваш ~/.bashrc не загружается для этих команд, поэтому, если вам нужен псевдоним или что-то еще, вам придется это сделать;

cat ~/.bashrc > /tmp/konsolebash; echo "commands" >> /tmp/konsolebash;konsole -e /bin/bash --rcfile /tmp/konsolebash

Который просто копирует ваш bashrc, а затем добавляет ваши команды в конце

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .