Prompt

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 select
  • PS4 - 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ąc set -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:

Zmienne specjalne:

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

Przykład:

#!/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.