Prompt

Il prompt non e' altro che il sistema in attesa di input dall'utente, la sua forma classica e':

nome_utente@nome_computer:[#,$]

il mio in questo momento appare come

[root@tontolo root]#

e mi sta' dicendo che sono l'utente "root" sulla macchina "tontolo" e mi trovo nella mia home directory "root", se fossi stato un semplice utente al posto  del "#" ci sarebbe stato probabilmente un "$". Dico probabilmente perche' quello che vediamo riflette i valori della variabile PS1 definita nel file '/etc/profile' che e' di proprieta' dell'utente root, se noi volessimo un prompt  diverso potremmo ridefinire la variabile PS1 nel file ~/.bash_profile.

Questa variabile accetta dei valori predefiniti che sono ottenuti facendo seguire alla barra rovesciata (backslash) dei caratteri speciali che sono:


\t     l'ora corrente nel formato HH:MM:SS
\d     la data in formato esteso es. "Tue May 18"
\n    un carattere di nuova linea
\s     il nome della shell
\w    la directory corrente
\W     il percorso completo alla directory corrente
\u     il nome dell'utente
\h     il nome della macchina
\#     il numero del processo associato al comando in esecuzione
\!     la posizione numerica nel file storico dei comandi
\$     se l'UID e' 0 mostraun "#", altrimenti ub "$"

Quindi inserendo opportunamente questi caratteri possiamo modificarel'aspetto del nostro prompt. Se assegno alla variabile PS1 i seguenti valori:

PS1="[\u@\h \W]\$"

il mio prompt mi apparira' cosi':

[root@tontolo /root]#

se modifico la variable cosi':

PS1="[\t \s]\$ "

il mio prompt mi apparira' cosi':

[12:18:24 bash]#

Oltre a questi caratteri speciali la variabile PS1 puo' contenere anche comandi
per esempio se volessi far apparire la versione del kernel:

PS1="`uname -r` \$ "

il mio prompt mi apparira' cosi':

2.4.17#

Attenti all'uso delle virgolette , ho usato il carattere "`" non le classiche virgolette "'", chiamato backticks o
virgolette rovescie.
La variable PS2 determina l'aspetto del prompt secondario e viene visualizzato quando si digitano comandi incompleti. Questo succede quando abbiamo a che fare con comandi molto lunghi, possiamo digitare il comando su piu' linee facendo precedere il comando invio da una barra rovesciata (backslash), a
quel punto la shell capira' che non abbiamo terminato e ci presentera' il prompt secondario che significa che sta attendendo successivi comandi. Se per sempio vogliamo vedere come si presenta il prompt secondario nella
nostra shell possiamo digitare

root@tontolo:#if [ -f /etc/profile ]; then

poi premiamo invio e ci accorgeremo di avere un prompt diverso il mio e':

>

in questo caso non abbiamo dovuto far precedere l'invio da una barra rovescia perche' la shell riconosce i suoi costrutti di programmazione, volendo si potrebbe digitare un semplice

'echo $PS2'

per ottenere direttamente il valore della variabile.
Tutto quello che e' stato detto per PS1 vale in linea di massima per PS2.

<ritorna>