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

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

Править:

Это - то, что я сделал согласно предложению Muru: Я создал a scriptA.sh на рабочем столе и делают это исполняемым файлом затем, это было этим довольный:

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

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

0
задан 23 September 2014 в 06:00

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 файл для обоих сценариев, или то, чтобы заставлять их работать дважды щелкает . Тогда считайте предоставление себе паролем меньше perissions для обоих сценариев:

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

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

1
ответ дан 7 October 2019 в 01:54

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

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