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:
- \d
- data,
- \h
- nazwa hosta,
- \H
- pełna nazwa domenowa hosta,
- \j
- liczba zadań pracujących w powłoce,
- \n
- znak nowej linii,
- \r
- znak powrotu karetki,
- \s
- wyświetla nazwę powłoki
- \l
- nazwa urządzenia terminalowego danej sesji,
- \t
- godzina w formacie 24 godzinnym,
- \T
- godzina w formacie 12 godzinnym,
- \u
- nazwa użytkownika,
- \w
- aktualny katalog roboczy,
- \W
- ostatni człon aktualnego katalogu roboczego,
- \!
- numer danego polecenia w całej historii poleceń,
- \#
- numer danego polecenia w aktualnej sesji,
- \$
- znak identyfikujący sesję, # w przypadku administratora, $ w przypadku użytkownika.
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.
Przykład
#!/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.
Dodatkowe informacje
- http://www.davidpashley.com/articles/bash-prompts.html
- http://networking.ringofsaturn.com/Unix/Bash-prompts.php
- http://www.komputery-internet.net/linux/bash_kolory.php
- http://night.jogger.pl/2007/02/03/chodz-pomaluj-moj-swiat-kolorujemy-konsole-linux/
- http://bashish.sourceforge.net/
- http://www-128.ibm.com/developerworks/linux/library/l-tip-prompt/
- http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html





