Запуск программы через терминал и ее немедленное размещение в bg / bashrc
Поэтому я пытаюсь запустить Программу с помощью терминала, но я также не хочу, чтобы она была привязана к указанному терминалу.
я добавил псевдоним внутри bashrc для легкого запуска:
alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh && ^Z && bg && disown'
Я также попробовал это:
alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh \& && disown'
что, к сожалению, тоже не сработало или лучше сказать, работало, но не так, как мне бы хотелось, так как программа не показывалась, а работала.
Любые идеи / указатели, где я иду не так?
Изменить: Забыл упомянуть: Ubuntu 14.04
1 ответ
Отправка процесса в фоновый режим работает иначе, чем вы предполагаете, особенно в сочетании с sudo, По этим причинам я рекомендую совершенно другой подход:
Создать сценарий оболочки
tksuiteв каком-то каталоге, встречающемся в$PATHнапример,/usr/bin/tksuite:#!/bin/sh exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"Сделайте его исполняемым:
sudo chmod +x /usr/bin/tksuiteТеперь вы можете запустить скрипт с привилегиями суперпользователя в фоновом режиме с помощью
gksudo tksuite & disown
В качестве альтернативы все это может быть сделано в функции оболочки
tksuite() {
gksudo -- sh /usr/local/tksuite_client/run_client.sh "$@" &
disown
}
вызываемый с tksuite как вы и хотели.