プロンプト文字列を変更せずに端末のタイトルをどのように変更できますか?

プロンプト文字列を変更せずに端末のタイトルをどのように変更できますか?

特定の色とフルパスで現在のディレクトリを表示するようにコマンドプロンプトをカスタマイズしました。これで、ウィンドウのタイトルをフルパスではなくディレクトリ名に設定したいと思います。 Kornシェルでこれを達成する方法を教えてください。ありがとうございます。

答え1

これを達成するために私が見つけた方法は、CDのエイリアスを作成することです。次のコードをファイルに入れて.profileトリックを実行しました。

xcd() { cd $*; echo -ne "\033]0;$(basename $PWD)\007"; }
alias cd='xcd'

私が実際に探していたソリューションを提供してくれたKusalalanandaに感謝します。

cd() { command cd "$@"; echo -ne "\033]0;${PWD##*/}\007"; }

答え2

ウェブサイトによると:xtermのタイトルを変更する方法:他のシェルの例

kshにはいくつかの機能と拡張機能があります。動的に更新するには、プロンプトにエスケープされた文字列を挿入する必要があります。この例では、username@hostname: ディレクトリのタイトルと ksh$ プロンプトを生成します。

case $TERM in
    xterm*)
        HOST=`hostname`
        PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ '
        ;;
    *)
        PS1='ksh$ '
        ;;
esac

ただし、$ PWDは完全なディレクトリパスを生成します。 ${...##...} 構造を使用して、ディレクトリから $HOME/ プレフィックスを削除できます。 ${...%%...} を使用してホスト名を切り捨てることもできます。

HOST=`hostname`
HOST=${HOST%%.*}
PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '

プロンプト文字列の^ [と^ GはESCとBELの単一文字です(Cq ESCとCq Cgを使用してemacsに入力できます)。

関連情報