画面を実行すると、プロンプトが変更されます。この動作を防ぐにはどうすればよいですか?例えば:
$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$
興味深いことに、他のマシンではこれを行いません。問題のマシンは、画面バージョン4.00.02(FAU)5-Dec-03のRedhat 4 update 4です。
.screenrcファイルに(まだ存在しないと仮定して)追加してみてください。
シェル-$シェル
これにより、画面セッションを初期化するとき、または画面セッション内から別の端末を作成するときに、ログインシェルが提供されます。
多くのディストリビューションは、プロンプトを設定する前に端末のタイプをチェックします。たとえば、Ubuntuには、デフォルトの.bashrcに次の小さなgemが含まれています。
#派手なプロンプトを設定します(色が「欲しい」ことがわかっている場合を除き、色はありません) case "$ TERM" in xterm-color)color_Prompt = yes ;; esac
Screenは独自のTERM変数(「screen」)を使用するため、bashは派手な色のプロンプトを表示できないと考え、デフォルトでより単純なものに設定します。もちろん、Screenは、通常の端末と同じ複雑なプロンプトを完全に実行できます。
したがって、この動作をオーバーライドするには、~/.bashrc
ファイルの最後に優先PS1オプションをハードセットするだけです。または、冒険心がある場合は、TERM変数の値をチェックするテストを見つけて、「xterm-color」に加えて「screen」を受け入れるように変更します。
おそらく、これは〜/ .screenrcファイルに設定されているカスタマイズされた変数ですか?
ScreenrcにShell -$Shell
とsetenv PS1
がなく、bashrcの(ダム)端末の特別なテストがないマシンで同じ問題が発生しました(画面にカスタムプロンプトが表示されなくなりました)。
使用する$ TERMの設定:
$ echo $TERM
urxvt-unicode-256color
screenrcで、Screenの下にある間にカスタムプロンプトが返されました。
- #term xterm-256color
+ term urxvt-unicode-256color
PS:別のアカウントではこれは必要ありませんでしたが、bashrcはdircolorsと最新の端末をこの方法でテストします 1 :
if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
PS1=<my fancy Prompt>
私はこれもうまくいくと信じています:
if [ "$TERM" != "dumb" ]; then
PS1=<my fancy Prompt>