RHEL6とCentOS 6では、次のように/etc/bashrc
設定しますPROMPT_COMMAND
。
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
fi
私が知っている限り、これらのオプションはすべて印刷されて見えません。何が役に立ちますか?
PROMPT_COMMAND
プロンプトが表示される前に(PS1
通常)これが実行されることを知っています。見えないものをエコーするのはなぜ役に立たないのかわかりません。
答え1
\033
(エスケープされた)文字の8進コード。これは、エコー文字列が端末制御シーケンスEsc
と呼ばれる良いヒントです。PROMPT_COMMAND
例の両方のシーケンスは、端末のタイトルをに設定しているように見えますuser@host:pwd
。
最初のケースでは、xterm*
ウィンドウ名とアイコンのタイトルを設定します。詳細な手順についてはリストをご覧ください。xterm制御シーケンス見つかるまで下にスクロールします。OSC Pt;下にオペレーティングシステムの制御(OSCはESC ]
、STはESC \
)。
2番目のケースは、screen
端末エミュレータの場合です。画面制御シーケンス、説明するESC _
画面のハード状態の設定(簡単に言えば、画面ウィンドウのタイトルです。)