Ho un server Debian ospitato. Quando accedo tramite ssh, sono accolto da un ambiente sh. Come lo cambio in modo da iniziare in un ambiente bash?
Ho un server Debian ospitato. Quando accedo tramite ssh, sono accolto da un ambiente sh. Come lo cambio in modo da iniziare in un ambiente bash?
Risposte:
Come utente normale, è possibile modificare la shell di accesso predefinita utilizzando il chsh
comando Ecco un esempio:
chsh -s /bin/bash
Un'altra opzione è utilizzare usermod come root:
usermod -s /bin/bash username
adduser
, dovrebbe impostarlo su bash per impostazione predefinita. L'impostazione predefinita è configurata in /etc/adduser.conf
. Altrimenti, specificare esplicitamente la shell con useradd
.
Si modifica /etc/passwd
dove l'ultima voce è la shell predefinita. Fallo /bin/bash
.
In alternativa, è possibile modificare modificare l'impostazione predefinita del sistema di /bin/sh
non essere bash.
/bin/sh
è /bin/dash
. E per quello che vale le altre due risposte sono identiche e raggiungono lo stesso fine con mezzi diversi. Qualunque cosa.
/etc/passwd
sono altamente scoraggiate. Un errore di modifica può interrompere gli accessi per tutti gli utenti, richiedendo il ripristino dei supporti o l'avvio in modalità utente singolo per la riparazione. Ci sono strumenti come usermod
per cambiare /etc/passwd
.
/etc/passwd
.
/bin/bash
come /bin/sh
è uguale alla sua esecuzione --posix
, che potrebbe avere risultati indesiderati.
/bin/bash
come shell per tutti quegli anni su tutte le macchine. Hai bisogno di un argomento più concreto.
La shell di sistema predefinita /bin/sh
nelle recenti versioni di Ubuntu è configurata per essere /bin/dash
. Eseguendo semplicemente il seguente comando:
sudo dpkg-reconfigure dash
puoi riportarlo al vecchio default di /bin/bash
.
Con questo, puoi ottenere l'effetto desiderato di avere bash
come shell interattiva senza modificare le impostazioni dell'utente (no chsh
o usermod
) e funzionerà per tutti gli utenti che attualmente hanno la shell impostata su /bin/sh
.
C'è solo un piccolo aspetto negativo in questo: il tempo di avvio di Ubuntu potrebbe aumentare leggermente, perché dash
richiede meno memoria per caricarsi e leggermente più veloce per essere eseguito (non c'è da stupirsi: è così limitato nelle funzionalità). Ma penso che sarà piuttosto difficile misurare questo effetto, specialmente per l'ambiente di hosting.
Inoltre, a volte è fastidioso vedere gli script di shell che non funzionano correttamente perché utilizzano alcune bash
funzionalità avanzate che non sono supportate da dash
. L'uso di questa ricetta farà in modo che ciò non accada.
Per ulteriori informazioni, vedere wiki di Ubuntu su questo problema .
/bin/sh
è usato come interprete per gli script di shell compatibili con POSIX - non è necessariamente la migliore shell interattiva; se si desidera bash
essere la shell di sistema, è necessario impostare la shell di accesso preferita utilizzando chsh
o le adduser
chiamate appropriate . usare dpkg-reconfigure
è una cattiva scelta se userA vuole zsh e userB vuole bash ed entrambi insistono nell'avere / bin / sh come shell predefinita.
zsh
, e userB su bash
lo avranno. Se userC configurato sh
, avrà bash
, che è l'attuale impostazione predefinita di Ubuntu per i nuovi utenti
dpkg-reconfigure zsh
impostare zsh
come / bin / sh, e quindi dpkg-reconfigure dash
impostare dash
come / bin / sh che è una specie di deadlock; sto principalmente dicendo che è preferibilmente impostare la shell di accesso sulla shell che si desidera utilizzare piuttosto che passare attraverso i cerchi per rendere / bin / sh una buona shell di accesso.
dpkg-reconfigure dash
può sh
essere utile bash
, piuttosto che paralizzato dash
. Tutte le altre shell saranno ancora intatte.
Nel caso in cui stai tentando di utilizzare un account condiviso (per qualsiasi motivo) e non riesci a modificare la shell predefinita, puoi eseguire
ssh -t <user@hostname> bash -l
Se è necessario mantenere l'ambiente da un'altra shell, è possibile eseguire prima quella shell; per esempio
ssh -t <user@hostname> ksh -c bash -l
-l
opzione?