Запуск программы через терминал и ее немедленное размещение в 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, По этим причинам я рекомендую совершенно другой подход:

  1. Создать сценарий оболочки tksuite в каком-то каталоге, встречающемся в $PATHнапример, /usr/bin/tksuite:

    #!/bin/sh
    exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"
    
  2. Сделайте его исполняемым:

    sudo chmod +x /usr/bin/tksuite
    
  3. Теперь вы можете запустить скрипт с привилегиями суперпользователя в фоновом режиме с помощью

    gksudo tksuite & disown
    

В качестве альтернативы все это может быть сделано в функции оболочки

tksuite() {
    gksudo -- sh /usr/local/tksuite_client/run_client.sh "$@" &
    disown
}

вызываемый с tksuite как вы и хотели.

Другие вопросы по тегам