$PS1
Probabilmente la variabile prompt non è stata impostata, quindi \s-\v\$
viene utilizzato il valore predefinito incorporato .
Quando bash si avvia in modo interattivo, genera un file di configurazione, di solito uno ~/.bashrc
o ~/.bash_profile
, presumendo che esistano, ed è così che viene impostato un prompt più elaborato. Da man bash
:
INVOCAZIONE
[...] Quando bash viene invocato come shell di login interattiva o come shell non interattiva con l'opzione --login, legge innanzitutto ed esegue i comandi dal file / etc / profile, se quel file esiste. Dopo aver letto quel file, cerca ~ / .bash_profile, ~ / .bash_login e
~ / .profile, in questo ordine [...]
[...] Quando viene avviata una shell interattiva che non è una shell di accesso, bash legge ed esegue i comandi da
~ / .bashrc, se quel file esiste.
Non avendo impostato il prompt può verificarsi in due contesti diversi, quindi shell di accesso e shell non di accesso. Se si utilizza un display manager per accedere direttamente alla GUI, non si incontrano shell di accesso se non si passa a una console virtuale (tramite, ad esempio, da CtrlAlt+ F1 a F6). Tuttavia, è possibile verificare la bash profilo di accesso nella GUI con l'apertura di una nuova shell di login in modo esplicito: bash -l
.
Il problema si verifica con shell non di accesso
Se il problema si verifica con, ad esempio, i normali terminali della GUI, allora ~/.bashrc
manca il tuo , oppure è stato modificato per escludere l'approvvigionamento di un file globale, probabilmente /etc/bashrc
.
Se ~/.bashrc
non esiste, dovrebbe essere /etc/skel/.bashrc
utilizzato per crearlo per i nuovi utenti. Copia semplicemente quel file nella tua home directory e il tuo prompt predefinito dovrebbe tornare per la prossima nuova shell che apri.
Se ~/.bashrc
esiste, controlla se esiste una linea da qualche parte che genera /etc/bashrc
:
. /etc/bashrc
-OR-
source /etc/bashrc
In caso contrario, controlla se quel file esiste (dovrebbe, almeno sulla maggior parte delle distribuzioni Linux) e aggiungi una tale linea alla tua ~/.bashrc
.
Il problema si verifica con le shell di accesso
Se il problema si verifica con shell di accesso e shell non di accesso, il problema è probabilmente lo stesso di cui sopra. Se si verifica solo con le shell di accesso, o non hai uno dei file menzionati per le shell di accesso sotto la citazione INVOCATION sopra, oppure non hanno il tuo sorgente ~/.bashrc
, cosa normale sulla maggior parte delle distribuzioni Linux. Se nessuno di questi file esiste, creane uno ~/.bash_profile
con questo:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Ciò consente, per la maggior parte, di mantenere la configurazione in un file ( ~/.bashrc
).
Se non importa cosa fai, non puoi ricevere un prompt, puoi crearne uno e metterlo in ~/.bashrc
questo modo:
if [ "$PS1 ]; then
PS1= .... # see below
fi
Questo perché $ PS1 è impostato e ha un valore predefinito per le shell interattive e non si desidera impostarlo diversamente poiché altre cose potrebbero utilizzare questo valore per determinare se si tratta di un ambiente interattivo.
La pagina man di bash contiene una sezione PROMPTING che descrive come impostare un prompt con caratteristiche dinamiche come il nome utente e la directory di lavoro corrente, che sarebbe, ad esempio:
PS1="\u \w:"
C'è una guida per usare il colore qui . Presta attenzione al fatto che dovresti racchiudere caratteri non stampati in ( \[
e \]
c'è una discussione di questo alla fine della risposta sui colori).