У меня есть сценарий удара, который запускает окно терминала с нескольких вкладок и выполняет команду на каждой из вкладок, подобных этому (и заголовки не поддерживаются, я знаю):
#!/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 используемым в сценарии?
Должно быть более изящное решение, чем это, но можно попробовать что-то как:
--command="bash -c 'export HISTFILE=/tmp/hist\$\$; history -s \"$cmd1\";
history -w; $cmd1; exec $SHELL'"
где удару дают его собственный файл истории hist$$
, $$
необходимость быть оставленным, чтобы быть оцененным позже к pid процесса. history -s
сохраняет строку к списку предыстории, и -w
сохраняет это к HISTFILE
. Оболочка, как предполагается, использует этот набор значений в среде. Вы, возможно, должны добавить --norc
чтобы удар остановил его настраивающий другой файл истории от Вашего ~/.bashrc
, например.