.tcshrcで端末のタイトルを設定した後、lessコマンドは動作を停止します。

.tcshrcで端末のタイトルを設定した後、lessコマンドは動作を停止します。

鉱山に次のコマンドを追加しました~/.tcshrc

echo "\033]0;${PROJECT_NAME}\007"

less新しく開いたコマンドがgnome-terminal正しく機能しませんでした。ただし、moreコマンドは影響を受けません。

lessコマンドを実行しようとすると、次の内容が表示されます。

less log

ESC]0;MYPROJ^G
log (END) 

答え1

パイプまたは同様のスクリプトを使用して出力をパイプlessするように設定できます。環境変数および/またはその設定がファイルlesspipeで使用されていると、この現象が発生する可能性があります。出力がパイプデータと混在し、混乱を招きます。LESSOPENLESSCLOSE~/.lesskey~/.tcshrc

~/.tcshrcTTYなしでシェルに対して実行されたときに追加したコマンドを実行しているようです。これにより発生した問題が発生し、他の多くのコマンドで問題が発生する可能性がscpありますrsync画面出力を生成するコマンドをユーザーまたは同様のシェル起動スクリプトに追加する場合は、コマンドが対話式および/または.tcshrcTTYを持つセッションでのみ実行されるように、常にコマンドを条件付きで作成する必要があります。

この問題を解決する最も簡単な方法は、出力を次のよう~/.tcshrcに制限することです。インタラクティブシェルセッション専用です。シェルプロンプトが表示されます。出力を条件付きで作成できます。つまり、追加した行を次の.tcshrcように置き換えることができます。

if ($?prompt) then
    echo "\033]0;${PROJECT_NAME}\007"
fi

カスタムプロンプトを設定する前にそれを追加してください。

別のアプローチは、まずTTYの有効性を自動的にテストすることです。

tty -s && echo "\033]0;${PROJECT_NAME}\007"

関連情報