端末に改行が正しくないことを示すメッセージが表示されます。

端末に改行が正しくないことを示すメッセージが表示されます。

cdプロンプト(特に入力するパス)がかなり大きい場合、Ubuntuベース端末が現在の行を上書きすると問題が発生します。私はここでこの問題をよく調べています。端末プロンプトが正しくラップされません。私の問題と非常に似ていますが、残念ながら異なります。

特にファイルにコメントを付け、コメントを解除して原因を絞り込み、次の行が.bashrc問題を引き起こすことを発見しました。

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

Ubuntuがその理由が何であるかを知ることができるので、完全に説明せずに問題を解決するための具体的な方法はありますか?

答え1

PSプロンプトを単純なものに設定すると、なぜ同じ動作が表示されるのかわかりません(例:PS1 = "[hostname]" '$ LOGNAME:$ PWD>')。しかし、.bashrcを削除すると問題は完全に消えます。

私にとって、これはbashrcに問題を引き起こす他のものがあることを示しています。

私の提案は、設定した変数、特にケースブロックPS1の定義に使用する変数を調べることです。

あなたの質問であなたが望むPS1はuser@host:dirと指定しています。あなたが書いたPS1の定義は、さまざまな色や他の不要なものを追加しようとしながら、過度に複雑で誤って書かれています。

基本を維持してください。必要なメッセージを取得するには、次のものが必要です。

case "$TERM" in
xterm*|rxvt*)
    PS1="\u@\h:\w> "
    ;;
*)
    ;;
esac

作業を開始すると、必要なカラフルなハイライトと着信音の両方を追加できます。

私はあなたが提示した例のさまざまなバリエーションを試しましたが、あなたが説明する動作を生成することはできません。より深く探求するには、bashrc全体を見てください。しかし、作業を始めるまでそれを取り除き、必要な要素だけを持っていれば作業を完了できると思います。以下を除き、bashrcのすべてのエントリを文字通り削除します。

case "$TERM" in
xterm*|rxvt*)
    PS1="\u@\h:\w> "
    ;;
*)
    ;;
esac

そして少しずつもう一度追加してください。あなたが提供した短いコードスニペットでは見えない方法で端末を投げるための制御シーケンスがどこかに埋め込まれます。

関連情報