新しく開いたターミナルごとに異なるシェルプロンプトの色を設定する方法

新しく開いたターミナルごとに異なるシェルプロンプトの色を設定する方法

私はUbuntuを使っていて、bashシェルプロンプトの色を手動で変更することができます使用して

export PS1="\e[0;32m[\u@\h \W]\$ \e[m"

ただし、新しいターミナルまたはタブを開くたびに、シェル プロンプトの色が自動的に変更されるようにしたいと考えています。基本的な tty TERM には 16 色があり、16 を超えるターミナルが開いている場合は色を回転しても問題ないことはわかっています。このソリューションはPutty、、tmuxまたはを介し​​て接続する場合にも機能しますかscreen

私のアイデアは、ユーザーが開いた新しいターミナル セッションを検出し、グローバル カウンターを から に増やすスクリプトを記述しshellて に配置することです。ユーザーが開いたターミナルの数を検出するにはどうすればよいでしょうか。.bashrc\e[0;31m[\e[0;47m[

答え1

ターミナルの数を数える (例: who - a | grep user | wc -l) は機能しません。1 つまたは複数のシェルが閉じられると、合計数が減少し、新しいターミナルがすでに開かれている別のターミナルと一致する可能性があります。

単純にカウンターを用意するだけです:

全体で 6 色にしたい場合:

touch ~/.colornumber
new=$(awk '(NR==1) { print ($1 + 1) % 6; }' ~/.colornumber)
echo $new > ~/.colornumber
#and use color number $new for your current terminal, for example defined in an array of 6 entries. 
 # just note here that color 0 is for the 6th terminal, not the first... or change the awk above

関連情報