Как запустить команду в уже открытом терминале через скрипт оболочки

Я бегу снаряд script.sh который должен открыть терминал, а затем выполнить некоторые команды в этом открытом терминале. Что происходит, так это то, что терминал запускается, но следующие команды не выполняются в этом терминале. Если кто может подскажите пожалуйста как после открытия терминала через это script.sh запустить в нем некоторые другие команды. Это мое script.sh файл:

#!/bin/bash
gksu -u userA /usr/bin/gnome-terminal PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts

поэтому первая команда gksu -u userA /usr/bin/gnome-terminal открывает экземпляр терминала, я спрашиваю, как выполнить две следующие команды PACKAGE_PATH=/home/userA/package1 а также cd /home/userA/scripts в этом открытом терминале с использованием script.sh

РЕДАКТИРОВАТЬ:

после применения предложения Муру я использовал следующее:gnome-terminal -x sudo -u userA bash -c 'PPACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; cd /home/userA/scripts; source varset.sh; bash' но он не запускается в той же последовательности, я поставил его.

Первая строка в терминале - это сообщение, которое находится в variables.sh (хотя это и должна быть третья команда для запуска), а другая вещь заключается в том, что ни одна из переменных, которые должны быть установлены с помощью этого varset.sh устанавливается, например, когда я использую echo $var1 (который находится в variables.sh) не отображает ничего, что означает, что переменные не установлены, единственное, что работает в variables.sh, это отображаемое эхо-сообщение.

Вторая строка, которая появляется в каталоге, является рабочим каталогом терминала, который установлен в /home/userA/scripts,

В-третьих, эта команда PACKAGE_PATH=PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH который устанавливает переменную $PACKAGE_PATH, не работает.

Так что, если кто-нибудь может посоветовать, как выполнить эту команду в этой последовательности и установить переменные в первой команде и переменные в varset.sh файл оболочки.

1 ответ

Решение

Я бы предложил следующее, чтобы сохранить оболочку открытой:

gnome-terminal -x sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
  cd /home/userA/scripts; \
  source varset.sh; \
  bash'

Тем не менее, последний bash не будет зависеть от назначения $PACKAGE_PATH или из source varset.sh если они не экспортируются.

Так:

gnome-terminal -x sudo -u userA bash -c 'export PACKAGE_PATH=/home/userA/package1:/home/userA/package2:$PACKAGE_PATH; \
  cd /home/userA/scripts; \
  source varset.sh; \
  bash'

с varset.sh экспорт должен сделать свое дело.

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