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 chshcomando 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/passwddove l'ultima voce è la shell predefinita. Fallo /bin/bash.
In alternativa, è possibile modificare modificare l'impostazione predefinita del sistema di /bin/shnon 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/passwdsono 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 usermodper cambiare /etc/passwd.
/etc/passwd.
/bin/bashcome /bin/shè uguale alla sua esecuzione --posix, che potrebbe avere risultati indesiderati.
/bin/bashcome shell per tutti quegli anni su tutte le macchine. Hai bisogno di un argomento più concreto.
La shell di sistema predefinita /bin/shnelle 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 bashcome shell interattiva senza modificare le impostazioni dell'utente (no chsho 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é dashrichiede 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 bashfunzionalità 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 bashessere la shell di sistema, è necessario impostare la shell di accesso preferita utilizzando chsho le adduserchiamate 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 bashlo avranno. Se userC configurato sh, avrà bash, che è l'attuale impostazione predefinita di Ubuntu per i nuovi utenti
dpkg-reconfigure zshimpostare zshcome / bin / sh, e quindi dpkg-reconfigure dashimpostare dashcome / 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 dashpuò shessere 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
-lopzione?