Bash

執行分離的螢幕會話,但在同一個 bash 中沒有終止

  • May 26, 2015

這裡已經有很多這樣的問題,但每個人都推薦(一種變體)以下解決方案:

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

例如,當script結束時,執行一個新的bash.

不幸的是,這對我不起作用,因為

  • 使用script$BASHPID 變數做某事
  • script執行永遠執行,例如需要用 CTRL-C 終止它
  • 並且在終止後我必須具有與執行相同的外殼script(相同$BASHPID

所以,問題是:

  • 如何screen在分離模式下啟動(例如在啟動時) - 通常這是由-dm

  • 它必須啟動外殼

    • 最好,如果它可以將其作為“登錄”外殼啟動,例如讀取 my 的內容.profile,但這可以通過source ~/.profile本身script來克服
    • 啟動script其他(二進制)程序將執行到 CTRL-C
  • 並且在終止後script我必須得到相同bash的(相同的$BASHPID(因為需要執行另一個腳本取決於它)

總之需要模擬以下互動工作:

  • 開始screen
  • echo $BASHPID
  • 在螢幕內執行一些命令(最後一個執行到 CTRL-C) - 例如執行/path/to/script
  • 分離 (ctrl-a d)

在上面之後,以後,我可以做

  • 重新連接 ( screen -ARR)
  • CTRL-C
  • 並且可以繼續……同樣
  • echo $BASHPID#將產生與上面相同的結果

任何的想法?(考慮-X但它不起作用,我可能在某個地方犯了錯誤)

看來 這裡的答案 是針對您的案例的。簡而言之:

bash --init-file <(echo "yourcommand")

引用自:https://serverfault.com/questions/694269