Запустите некоторые файлы оболочки из другого файла оболочки в другом месте

У меня есть 5 файлов оболочки в определенных местах в моей системе Ubuntu. У меня есть два пользователя в этой системе userA который является основным пользователем и userB, В настоящее время я должен вручную открыть терминал, используя пользователя userA а затем запустить последовательность команд терминала, которая включает в себя запуск 4 из 5 файлов оболочки, которые у меня есть, затем я открываю другой терминал и переключаю на userB и затем запустите последовательность некоторых команд и 1 файл оболочки. То, что я хочу сделать, это иметь два файла оболочки на рабочем столе (например, userA.sh а также userB.sh) и когда я дважды нажимаю на userA.sh это откроет терминал используя userA а затем запустите последовательность команд, которая включает в себя запуск четырех файлов оболочки, и когда я дважды щелкните на userB.sh это откроет другой терминал и переключится на userB и затем выполните последовательность некоторых команд, которая включает в себя один сценарий оболочки.

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

Это то, что я сделал в соответствии с предложением Муру: я создал scriptA.sh на рабочем столе и сделать его исполняемым, то это было это содержание:

#!/bin/bash
sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

но после двойного щелчка по нему и выбора run with terminal опция, терминал открывается на секунду, а затем закрывается сам. Я не знаю, почему это происходит, поэтому я был бы признателен, если бы кто-нибудь мог посоветовать, почему это происходит и как это преодолеть.

1 ответ

Решение

Вам придется использовать sudo где-то. Давайте использовать их в сценариях:

#! /bin/bash
#userA.sh

sudo -u userA bash -c '/path/to/script1.sh; /path/to/script2.sh; ... \
    /path/to/scriptn.sh; 

Аналогично для userB, Попробуйте создать файл.desktop для обоих сценариев или запустить их двойным щелчком. Затем подумайте о том, чтобы дать себе разрешения без пароля для обоих сценариев:

sudo tee -a /etc/sudoers.d/user-scripts <<EOF
$USER ALL = (ALL) NOPASSWD: /path/to/userA.sh, /path/to/userB.sh
EOF

Если вы хотите ввести пароли, заставить их работать в терминале (зависит от того, как вы выполняете скрипт), или используйте pkexec вместо sudo,

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