Ha ez a feladat, akkor én lehet, másképp csinálnám. Mégpedig úgy, hogy minden egyes prompt-színezést fájlokba raknék egyesével (azaz az esetedben lenne 6+1 fájl, a prompt0-val), ezt nyilván valami beszédes és kezelhető fájlnevekkel. A beállított prompt változó pedig a fájlnevet tárolná, amit egyszerűen csak beolvasol (miután ellenőrzöd, hogy a megfelelő könyvtárban létezik-e ilyen nevű fájl).
Sőt, még egy kicsit továbbmenve: mivel úgyis mindegyik esetben külön kapja a root felhasználó, a promptos fájlokban pl. egy ps1_user="....", ps2_user="...", ps1_root="..." és ps2_root="..." sorok lennének, és a beolvasás után a fő program állítaná be az "igazi" PS1 és PS2 értékeket.
Tehát pl.:
# prompt_piros.conf
ps1_user="promptpiros"
ps2_user="kicsit másmilyen"
ps1_root="promptnagyonpiros"
ps2_root="kicsit_másmilyen"
# prompt_zold.conf
# tartalom hasonlóan, mint előbb
# beillesztő rész
if [ -e "${PROMPTOK_KONYVTÁRA}/${prompt}.conf" ]; then
. "${PROMPTOK_KONYVTÁRA}/${prompt}.conf"
if [ $EUID = 0 ]; then
export PS1="${ps1_root}"
export PS2="${ps2_root}"
else
export PS1="${ps1_user}"
export PS2="${ps2_user}"
fi
else
echo "Nincs ilyen prompt!"
exit 1
fi
És akkor nem kellene számokkal variálnod, ha új promptot találsz ki, akkor nem kell a maxnumbert átírni, új függvényt megírni, stb., hanem csak lerakod a fájlt, és kb. működik is.
Ja, és ha a .bashrc-ben tényleg nem használod a prompt változót, akkor ezt a prompt változót (azaz amivel beállítod, mi legyen a prompt) egy külön fájlba raknám (prompt=prompt_piros módon), és ezt olvasnám be, és nem kellene vergődni a fájl értelmezésével.