Bash: Держите терминал gnome открытым, получите историю и восстановите контроль после выхода - PullRequest
0 голосов
/ 15 ноября 2018

Я написал скрипт, который открывает новый терминал (gnome) и несколько вкладок ( 40 более или менее), который должен работать бесконечно. Может произойти сбой, и это происходит, и я хотел бы легко повторно ввести введенную команду из той же вкладки.

Это выглядит так:

script='gnome-terminal'
tab='--tab-with-profile=scan'

for (( i = 0; i < len; i+=2 ));
do
    script+=" $tab --title=\"${you[i]}\" -e \"bash -c 'node scan ${you[i+1]}; bash;'\""
done

eval "$script" $>/dev/null \
&& kill -9 $PPID \
|| errorProfile

Я установил в профиле опцию «держать открытым при остановке», но я не могу получить свою команду, так как она не выдвигается в истории. Очень минимальное воспроизведение для этого выглядит так:

gnome-terminal -e 'bash -c "ls; bash"'

Я пробовал несколько вещей, от

gnome-terminal -e 'bash -c "history -s ls; bash"'

до

gnome-terminal -e 'bash -c ". ~/bashrc; ls; bash"'

Но ничего не работает, и моя история не заполнена -c arg.

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

Дополнительно:

  • Можем ли мы восстановить контроль над терминалом, когда опция профиля «держать открытым при завершении процесса»?
  • Можно ли не использовать опцию профиля для управления этим, а вместо этого ловить сигнал, чтобы сделать то, что я хочу?
...