Bash
如何使用互動式 TERM/TTY 在重新啟動時啟動螢幕
我有一台機器(通過 cron)配置為在重新啟動時啟動螢幕會話。會話打開了幾個螢幕並在其中一個中啟動伺服器。所有這一切都很好。但是,當我登錄並恢復螢幕會話時,我會收到如下 (PS1) 提示:
\u@\h [\j] \w\$
終端顏色也不會出現。這是
PS1
我在 bashrc 文件中明確設置的字元串,但是\u
shell 不會解釋控制序列。我確保我的 bashrc 和配置文件在螢幕開始之前被導入;從 cron 呼叫的腳本:#! /bin/bash # This script initializes screen with a propert environment. It is intended to # be run from cron. # source the profile if [ -r "$HOME/.profile" ]; then source "$HOME/.profile"; fi if [ -r "$HOME/.bash_profile" ]; then source "$HOME/.bash_profile"; fi if [ -r "$HOME/.bashrc" ]; then source "$HOME/.bashrc"; fi exec screen -dmS initscreen
我嘗試添加行“
export TERM=screen.xterm-256color
”和變體(例如,export TERM=xterm-256color
),但這些沒有改變。我的假設是,因為螢幕在重新啟動時啟動時沒有真正的 TTY,所以螢幕無法正確解釋我的終端,最終在沒有任何終端解釋的情況下啟動。當我退出螢幕並從 ssh 會話(而不是重新啟動時從 cron)重新執行啟動腳本時,一切正常。如何讓螢幕在重新啟動時啟動,以便我稍後在這些終端功能正常工作的情況下附加它?
提前致謝。
\w
像in這樣的魔術字元沒有被解釋的事實PS1
似乎表明由 screen 啟動的 shell 不是bash
,而是簡單的類似/bin/sh
. 我查看/etc/crontab
了我必須手上的一個系統,它有一條線SHELL=/bin/sh
一開始,但另一個發行版有
SHELL=/bin/bash
,因此您可能需要在某處明確設置它以確保獲得一致的結果。