再起動時に対話型TERM / TTYを使用して画面を起動する方法

再起動時に対話型TERM / TTYを使用して画面を起動する方法

再起動時にスクリーンセッションを開始するように(cron経由で)マシンを設定しました。セッションは複数の画面を開き、そのうちの1つでサーバーを起動します。これらすべてがうまくいきます。ただし、ログインして画面セッションを再開すると、次の(PS1)プロンプトが表示されます。

\u@\h [\j] \w\$ 

端末の色も表示されません。これはPS1bashrcファイルに明示的に設定された文字列ですが、\uシェルは同様の制御シーケンスを解釈しません。画面が始まる前に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の代わりに)起動スクリプトを再実行すると、すべてがうまく機能します。これらの端末機能が機能している場合は、後で接続できるように再起動時に画面を起動するにはどうすればよいですか?

よろしくお願いします。

答え1

\winのような魔法の文字が解釈されないという事実は、PS1screenによって開始されたシェルがこれと同じではないことを意味するようです。私が持っているシステムを見てみると、bash次のような行があります。/bin/sh/etc/crontab

SHELL=/bin/sh

ただし、他のディストリビューションにはあるため、SHELL=/bin/bash一貫した結果を保証するために明示的にどこかに設定する必要があるかもしれません。

関連情報