Сохраните выполняемую команду на ее вкладке (сценарий удара)

У меня есть сценарий удара, который запускает окно терминала с нескольких вкладок и выполняет команду на каждой из вкладок, подобных этому (и заголовки не поддерживаются, я знаю):

#!/bin/bash

title1="foo"
title2="bar"

cmd1="sleep 1s"
cmd2="cd ~/Desktop"

gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \
               --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'"

В реальном сценарии, когда процесс на одной из вкладок умирает, я должен перезапустить его, обычно. Однако нажатие клавиши UP не приводит к команде, используемой в сценарии на той вкладке. Это поведение является тем же с этим сценарием, как будто я нажимаю на первой вкладке, я не получаю "сон 1 с", но совершенно другая команда, которую я использовал в другом месте.

Существует ли путь к открытой вкладке для хранения $cmd используемым в сценарии?

3
задан 10 October 2018 в 11:02

1 ответ

Должно быть более изящное решение, чем это, но можно попробовать что-то как:

--command="bash -c 'export HISTFILE=/tmp/hist\$\$; history -s \"$cmd1\";
           history -w; $cmd1; exec $SHELL'"

где удару дают его собственный файл истории hist$$, $$ необходимость быть оставленным, чтобы быть оцененным позже к pid процесса. history -s сохраняет строку к списку предыстории, и -w сохраняет это к HISTFILE. Оболочка, как предполагается, использует этот набор значений в среде. Вы, возможно, должны добавить --norc чтобы удар остановил его настраивающий другой файл истории от Вашего ~/.bashrc, например.

1
ответ дан 1 December 2019 в 17:27

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

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