Prompt czyli znak zachęty (tekst, który informuje użytkownika, że system czeka na wprowadzenie przez niego danych) może być dowolnie konfigurowany.
Bash używa 4 różnych promptów w zależności od sytuacji. Ich wygląd jest określany przez zawartość zmiennych:
PS1
- jest widoczny niemal przez cały czas. Podstawowy prompt, standardowo ma postać:PS1="[\u@\h \W]\\$ "
PS2
- wyświetlany gdy interpreter potrzebuje dodatkowych danych, które musimy wprowadzić (np zapomnieliśmy zamknąć cudzysłów)PS3
- jest używany jako „prompt” przy korzystaniu z pętli selectPS4
- jest używany w momencie korzystania z opcji -x basha (debugowania - execution trace mode) - ten tryb można uzyskać uruchamiając Basha z opcja-x
lub wpisującset -o xtrace
. Jest jeszcze jeden sposób. Przed startem właściwej powłoki umieśćić słowo kluczowe xtrace w zmiennej systemowej SHELLOPT
Bash pozwala na modyfikowanie znaku zachęty w dużym zakresie. Po pierwsze, pozwala na użycie specjalnych znaków z backslashem wyświetlających różne parametry sesji i systemu. Po drugie, zmienne PS mogą zawierać dowolne zmienne powłoki, wyrażenia arytmetyczne, czy wywołania innych poleceń. Wybrane znaki, poprzedzane backslashem są podane poniżej:
Kilka bardziej i mniej typowych przykładów zmiany prompta jest pokazane poniżej:
bash-2.01$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
$ export PS1="[\u@\h \w]"
johny@batnet:~$ export PS1="[\u@\h \W] "
[johny@batnet ~] export PS1="(\t)\h\$ "
(14:36:32)batnet$
Drugi znak zachęty jest wyświetlany w sytuacjach takich jak pominięcie zamykającego apostrofu lub cudzysłowu: Przykład
(14:37:14)batnet$ export PS2="> "
(14:37:14)batnet$ echo "Ala ma
> kotka
> malego i czarnego ;)"
Trzeci znak zachęty wyświetlany jest w momencie tworzenia menu korzystajac z pętli select. Przykład do samodzielnego testowania.
#!/bin/bash
PS3='Wybierz swoje ulubione warzywo: '
select warzywo in "fasola" "marchewka" "ziemniaki" "cebula" "rzodkiewki" ; do
echo
echo "Twoim ulubionym warzywem jest $warzywo."
echo "Fuj!"
echo
break # ten break jest konieczny inaczje byłaby pętla nieskończona
done
#!/bin/bash
# idziemy do trybu xtrace
export PS4=':: '
set -o xtrace
echo "Hello world!"
**Wynik:**
(14:39:37)batnet$ sh oo.sh
:: echo Hello world!
Hello world!
W prompcie można używać kolorów identycznie jak w skryptach basha.