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