最後に実行されたコマンドの名前とディレクトリで「postcmd」のタイトルバーを更新するようにtcsh xtermをセットアップしました。
これは私が持っていたものと似ています(再現するための最小限の例):
alias postcmd 'echo -n "\033]0;hello_world\007";'
(このエイリアスは私の .cshrc ファイルにあることに注意してください。これをコマンド ラインに入力すると、100% 正しく動作します)
less
これにより、実行するすべてのコマンドの後に xterm タイトルバーが正常に更新され、「hello_world」と表示されます。ただし、 When I runを除きless
、次の端末出力が得られます。
>less abc.txt
ESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world
^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^GESC]0;hello_world^G...
(END)
ファイルが実際に開かれることはありません。このガベージ文字列が出力されるだけなのでCTRL-C
、キャンセルする必要があります。ベルまたはエスケープ文字がlessの初期化を台無しにしていますか? これを壊れないように変更する方法はありless
ますか?別のエディターを簡単に使用することもできますが、デバッグのためにコンソールを他のエンジニアと共有する必要がある場合があり、less
.
これは私が使用している実際のコードで、単純な hello_world の例と同じ問題があります。
alias postcmd 'set HIST = `history -h 1`; printf "\033]0;%s\007" "xterm: $HIST @ $cwd ";'
=====EDIT===== いくつかの追加情報:
> alias less
> echo $LESS
LESS: Undefined variable
> echo $TERM
xterm
>less --version
less 382
Copyright (C) 2002 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
>tcsh --version
tcsh 6.13.00 (Astron) 2004-05-19 (x86_64-unknown-linux) options 8b,nls,dl,al,kan,rh,color,dspm,filec
=== さらに編集 ===
さらにデバッグすると、.cshrc ファイルにコマンドを入力した場合にのみ問題が発生することがわかりました。.cshrc からエイリアスのコメントを外し、コマンド ラインにエイリアスを入力するだけで、less で適切に動作します。
また、エイリアスを .cshrc に入れた後、エイリアスを解除すると、エイリアスを解除した後でも壊れにくくなります。問題はエイリアスの存在ではなく、端末の作成時に .cshrc が実行されている間にエイリアスが作成されたことが原因であると思われますか?