Запуск программы через терминал и ее немедленное размещение в 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
как вы и хотели.