Su uno dei miei server, il prompt è [percorso utente @ host] ... e posso effettivamente premere "tab" per riempire automaticamente il percorso.
Ma sul mio nuovo server Ubuntu, è solo un segno di dollaro?
Su uno dei miei server, il prompt è [percorso utente @ host] ... e posso effettivamente premere "tab" per riempire automaticamente il percorso.
Ma sul mio nuovo server Ubuntu, è solo un segno di dollaro?
Risposte:
Dato che stai ponendo due domande, risponderò ad entrambe.
Poiché la shell non lo supporta o il completamento della scheda non è attivato.
Per risolvere questo, devi prima scoprire qual è la tua shell. Sulla macchina di cui ti piace la shell, corri
echo $SHELL
Potresti vedere il comune /bin/bash
, o qualcosa di meno comune /bin/tcsh
, /bin/zsh
o qualcos'altro del tutto.
Ora puoi cambiare la shell sulla macchina Ubuntu. Su quella macchina, assicurati innanzitutto che la shell desiderata esista. Poiché la shell potrebbe non trovarsi nella stessa posizione sul computer Ubuntu dell'altra, controllare la posizione digitando
which bash
Questo vi darà il percorso della shell che si desidera, qualcosa di simile /bin/bash
, /usr/bin/bash
o /usr/local/bin/bash
. Naturalmente, se si vuole una shell diversa da bash, direte which tcsh
, which zsh
o simili.
Se non vedi un percorso, ma invece vedi bash not found
, allora dovrai installare il pacchetto appropriato e usarlo di nuovo which
per scoprire dove è stata installata la shell.
Con il percorso della shell prescelta, puoi finalmente cambiare la shell eseguendo
chsh -s /bin/bash
sostituendo /bin/bash
con qualunque sia il percorso appropriato per la tua shell preferita.
A causa delle variabili di ambiente tempestive $PS1
, $PS2
e così via. Queste cose non tendono ad essere portatili tra le shell, quindi ecco alcuni link per i probabili candidati:
bash
ha un ampio manuale , con pagine sulle variabili Bash (incluso PS1
, ecc.) e Stampa di un prompt (che descrive PROMPT_COMMAND
il nome lungo per PS1
). Aggiungi la seguente riga alla tua~/.bashrc
export PS1='[\u@\h \w] '
tcsh
ha un manuale online (solo la sua pagina man), con una sezione sulle variabili d'ambiente del prompt . Aggiungi la seguente riga alla tua~/.tcshrc
set prompt='[%n@%m %~] '
zsh
ha una guida per l'utente , con una semplice guida alle istruzioni , nonché un manuale , con un riferimento molto dettagliato sull'espansione rapida . Aggiungi la seguente riga alla tua~/.zshrc
export PS1='[%n@%m %~] '
Bash non è l'unica shell.
Il tuo problema potrebbe essere una semplice questione di non avere un .profile o .bashrc che imposta PS1, o potrebbe essere che la tua shell di accesso non sia affatto bash.
Bash usa gnu readline
cose come il completamento delle schede. Questo è un argomento complicato e readline ha anche il suo file di configurazione per utente.
Vedi man bash
, man sh
e man 3 readline
. Bash risponde a --version
. Su molti sistemi Linux, in /bin/sh
realtà non è bash, ma di solito una versione paralizzata di ash
.
dash
invece di ash
? pensavo di aver letto qualcosa del genere
suppongo che non stai usando bash, ma sh e il tuo prompt non è impostato correttamente (se ciò è possibile anche con sh).
puoi ottenere la tua shell corrente digitando: echo $SHELL
se vuoi iniziare bash, basta digitare bash
sh
. L'eco $SHELL
stamperà una variabile d'ambiente chiamata SHELL
. Questa variabile d'ambiente punta semplicemente alla shell ed è impostata solo da bash. È quasi inutile nel determinare quale shell è in esecuzione, poiché indica, debolmente, che alcuni genitori del processo corrente potrebbero essere stati bash.
/bin/sh
sì. Ma non conosco nessuna shell il cui nome è sh
. Mi viene in mente ash
, ksh
, csh
, bash
, zsh
, e tcsh
. Il primo è il solito / bin / sh su Linux e NetBSD, l'ultimo è la solita shell di FreeBSD, e gli altri sono shell opzionali. Molti ambienti desktop cambiano la shell di login degli utenti in bash lasciando / bin / sh come ash.
sh
è la shell Bourne. en.wikipedia.org/wiki/Bourne_shell Alcuni sistemi (Solaris) sono ancora dotati di una versione della shell Bourne che non è solo una copia di una delle implementazioni (ash, dash, bash, ksh, zsh).
Devi impostare una variabile chiamata PS1 su uno dei tuoi script di accesso, ad esempio / etc / profile o ~ / .bashrc. Dipenderà dalla tua distribuzione.
Esempio: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
per stampare il nome della directory di lavoro corrente. E stai dicendo che neanche il completamento con Tab non funziona? (Su alcune macchine che utilizzo, ricevo quel breve prompt solo se eseguo il login come root e li lascio felicemente sul posto come un bel avvertimento. Come raramente, se mai, è necessario accedere come root: non si sta usando root , vero?)