Запустите некоторые файлы оболочки из другого файла оболочки в другом месте
У меня есть 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
,