GNU Screenがプロンプトをリセットしないようにするにはどうすればよいですか?[閉まっている]


13

screenを実行すると、プロンプトが変わります。この動作を防ぐにはどうすればよいですか?例えば:

$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$

興味深いことに、他のマシンではこれを行いません。問題のマシンはRedhat 4アップデート4で、スクリーンバージョン4.00.02(FAU)5-Dec-03です。

回答:


16

.screenrcファイルに追加してみてください(まだない場合)。

シェル-$ SHELL

これにより、スクリーンセッションを初期化するとき、またはスクリーンセッション内から別のターミナルを作成するときに、ログインシェルが提供されます。


1
.screenrcに 'shell / bin / bash'がありましたが、明らかに 'shell-/ bin / bash'または提供されているはずです。
スーガン2009

2

多くのディストリビューションは、プロンプトを設定する前に端末のタイプをチェックします。たとえば、Ubuntuのデフォルトの.bashrcには、この小さなgemが含まれています。

#派手なプロンプトを設定します(色が「欲しい」とわからない場合は色なし)
ケース「$ TERM」
    xterm-color)color_prompt = yes ;;
エサック

screenは独自のTERM変数( "screen")を使用するため、bashは派手な色のプロンプトを表示できないと判断し、デフォルトの単純なプロンプトを表示します。もちろん、画面は通常の端末と同じ複雑なプロンプトを完全に実行できます。

そのため、この動作を無効にするには、~/.bashrcファイルの最後に希望のPS1オプションをハード設定するだけです。または、冒険心がある場合は、TERM変数の値を確認するテストを見つけて、「xterm-color」に加えて「screen」を受け入れるように変更します。


1

おそらくこれは〜/ .screenrcファイルに設定されているカスタマイズされた変数ですか?


1
はい、グローバルまたは個人のscreenrcでsetenv PS1を確認します
半径

4
そして、それはどのようなカスタマイズされた変数でしょうか?答えがわからない場合は、答えないでください。
スーガン2009

0

screenrcのあるマシンSHELL -$SHELLとnoのマシンで同じ問題(画面にカスタムプロンプトが表示され なくなっ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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.