Выполнение отсоединило экранную сессию, но без завершения в том же ударе

Вот уже много вопросов как это, но все рекомендуют (вариант) следующее решение:

screen -dmS somename bash -c "/path/to/script; bash -l"

например, когда script концы, выполненные новое bash.

К сожалению, это не работы для меня, потому что

  • script использует переменную $BASHPID для чего-то
  • script выполнения работают навсегда, например, потребность завершает его с CTRL-C
  • и после завершения у меня должна быть та же оболочка как выполнения script (то же $BASHPID)

Так, вопрос:

  • Как запустить screen в отдельном режиме (например, при начальной загрузке) - обычно это сделано -dm
  • это должно запустить оболочку
    • лучше всего, если это может запустить его как оболочку "входа в систему", например, что чтения мой .profile, но это может быть преодолено с source ~/.profile в script самостоятельно
    • script запустите некоторую другую (двоичную) программу, что будет работать до CTRL-C
  • и после завершения script Я должен получить то же bash (с тем же $BASHPID (потому что потребность выполняет другого сценарии, что, зависит от него),

В короткой потребности моделируют следующую интерактивную работу:

  • запустить screen
  • echo $BASHPID
  • run-some-commands в экране (последние выполнения до CTRL-C) - например, выполненный /path/to/script
  • отсоединение (ctrl-a d)

После вышеупомянутого, позже, я могу сделать

  • повторное прикрепление (screen -ARR)
  • CTRL-C
  • и может продолжиться... тем же
  • echo $BASHPID #will производят то же как выше

Какая-либо идея? (думающий о -X но это не работы, где-нибудь я, вероятно, делание ошибки)

5
задан 25 May 2015 в 17:40
1 ответ

Похоже, что ответ здесь для твоего дела. Вкратце:

bash --init-file <(echo "yourcommand")
3
ответ дан 3 December 2019 в 01:50

Теги

Похожие вопросы