コマンドを入力するたびに、GNU画面タブの名前が変更されます。

コマンドを入力するたびに、GNU画面タブの名前が変更されます。

Gnu画面を使用するときは、別のタブから別のコンピュータにsshを実行し、それに応じてタブの名前を変更すると正常に動作します。タブ名は保持されます。

元のコンピュータの端末である新しいタブでコマンドを入力するたびに、タブ名が現在の作業ディレクトリに変わります。

例:

//////////// これが以前のすべての外観でした。

    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01  2$ dev03

////////// タブ名の設定

    [me@mac ~]$ 
    Set window's title to: test
    [ me ][0*$ test  1-$ web01 clone  2$ dev03 clone

///////// コマンドを入力します。pwd

    [me@mac ~]$ pwd
    /home/me
    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01 clone  2$ dev03 clone

タブの名前は再び現在の作業ディレクトリに変わります。他のコンピュータにSSHを接続するタブでは、これは発生しません。だから私は個人設定の問題かもしれないと思いましたが、.bashrc、.bash_profile、.screenrcファイルにはヘッダーに関する内容がないようです。

ベストアンサー1

シェル構成は、端末のタイトルを現在実行中のコマンドに設定しています。これはかなり一般的な構成です。これはシェルによって実行されるため、シェルが異なるシェル構成を持つ別のシステムで実行されている場合は実行されません。画面ウィンドウのタイトルを設定するエスケープシーケンスは、エスケープ文字(バイト値27)です。␛kTITLE␛\

Bashでこのエスケープシーケンスをエクスポートするコードを見つけます。エスケープ文字は\eまたはで表示できます\033。このコードはプロンプト(PS1)にあるか、コマンド()を実行した後に新しいプロンプトが表示される前に実行されるコマンドにありますPROMPT_COMMAND。その値を確認してください(リテラルエスケープ文字が含まれている場合は、端末にエスケープシーケンスを送信しないように注意してください)。

printf 'PS1=%s\nPROMPT_COMMAND=%s\n' "$PS1" "$PROMPT_COMMAND" | cat -v

DEBUGこのエスケープシーケンスは、コマンドを実行する前にトラップを介して実行することもできますが、あまり一般的ではありません。

trap -p DEBUG

これらの変数(またはトラップ)は、ユーザーまたはシステム全体の構成であるbash構成で設定する必要があります。通常、~/.bashrc一部の/etc/bash.bashrcシステムでは、、、、、、または~/.bash_profileその~/.profileいずれかに含まれるファイルでも/etc/profileあります。~/.bash_login少数の設定で新しいシェルを実行することで、範囲を絞り込むことができます。

env -i bash                  # no environment variables or per-user settings
env -i HOME="$HOME" bash     # no environment variables, normal interactive shell
env -i HOME="$HOME" bash -l  # no environment variables, login shell
HOME=/none bash              # skips your per-user settings

.bashrcこれらのうちどれが問題を引き起こしているのかを比較することで、設定がユーザー設定から来たのか、システム全体の設定から来たのか、インタラクティブシェルから読み取った設定なのか、ログイン時間ファイル(.profileなど)から来たのかがわかります。

おすすめ記事