( uzsolt | 2022. 01. 24., h – 11:45 )

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.