screen 使いが RHEL7 を使った時、間違いなく不満に思うこと。
ウィンドウタイトルが ウ ザ い。
無駄に長いし、cd する度に長さがパタパタ変わるし、ディレクトリを潜る度にどんどん長くなるし、そのせいで簡単に横幅が溢れるし、とても我慢できたものではない。何故これが初期設定なのか理解不能。誰か喜ぶ人いるの?
調べると、PROMPT_COMMAND のせいらしい。手持ちの環境でざっと比べると、
CentOS 5.5: /etc/bashrc:
# are we an interactive shell?
if [ "$PS1" ]; then
case $TERM in
# <...snip...>
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
;;
CentOS 6.2: /etc/bashrc:
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
RHEL7.1: /etc/bashrc:
screen*)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi
;;
実は各バージョンで微妙に違った。ともかく、RHEL7 の設定だけは看過できない。暫く考えて、次のスクリプトを配置することにした。
/etc/profile.d/myscreen.sh:
if [ -n "$PROMPT_COMMAND" ] ; then
case "$TERM" in
screen*) PROMPT_COMMAND=${PROMPT_COMMAND/\\033*\\033/\\033k\\033} ;;
esac
fi
(嬉しい)副作用として、.screenrc に下記の設定を入れると、ウィンドウタイトルが実行中のコマンド名になる。root でなく一般ユーザーなら、「#」の代わりに「$」を使う。確認はしていないが、RHEL6 以前でも動くはず。
~/.screenrc:
shelltitle "#|bash"
RHEL7 のこの仕打ちは、tmux 使いの嫌がらせ 老兵は去れというメッセージかも知れないが、老兵と言えども消えゆくにはまだ早い。screen であと十年は戦える。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。