Скрипт оболочки не работает на терминале

Скрипт оболочки не работает на терминале

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

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

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

решение1

Вы, вероятно, захотите использовать, gksudoесли хотите запустить его с рабочего стола. Это откроет окно, запрашивающее ваш пароль.

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

Также для отладки вам, вероятно, сначала нужно запустить этот скрипт в терминале. Таким образом, он не закроется сразу после вывода сообщений об ошибках.


Обновлять

Один из способов сделать это — создать файл следующим образом:

/home/user_name/.gnome2/panel2.d/default/launchers/script_name.desktop

Затем поместите туда что-то вроде этого:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=gdu-category-peripheral
Name[en_US]=Receiving fax
Exec=gksu /usr/bin/gnome-terminal
Comment[en_US]=Some description...
Name=My Script
Comment=Start my script
Icon=gnome-panel-launcher

В общем, у меня это отлично работает. Терминал gnome принимает параметры, так что вы можете менять различные настройки.

Используйте --working-directory=...вместо вашей cd ...команды. Чтобы получить определенные переменные, вы, вероятно, захотите использовать опцию --profile=....

Exec=gksu -u userA /usr/bin/gnome-terminal --profile=/home/userA/profile --working-directory=/home/userA/scripts

Затем создайте скрипт профиля для переменной:

# In /home/userA/profile
PACKAGE_PATH=/home/userA/package1

Разумеется, вы можете добавить любой другой псевдоним или что-нибудь еще, что вам нужно, в скрипт профиля.

решение2

По умолчанию, когда вы выбираете опцию «запустить в окне терминала», окно терминала (gnome-) закрывается после завершения. Этоделаетоткрыть, раз уж ты упомянул, что он открывается на секунду. Ты можешь сделать этооставатьсяоткройте, изменив настройку в профиле вашего терминала:

В меню (gnome-terminal) выберите «Правка» > «Настройки профиля» > «Заголовок и команда». В опции «При завершении команды» выберите «Удерживать терминал открытым».

Это должно сработать.

введите описание изображения здесь

Связанный контент