Как запустить команду в уже открытом терминале через скрипт оболочки
Я бегу снаряд 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
экспорт должен сделать свое дело.