Modifica della shell predefinita in Linux [chiuso]


318

Come è possibile cambiare la shell predefinita? Il envcomando attualmente dice:

SHELL=/bin/tcsh

e voglio cambiarlo in Bash.


4
Questa è una buona domanda, ma potrebbe essere più appropriata per il sito QA di Linux.
BradleyDotNET,

Risposte:


415

Prova il comando linux chsh.

Il comando dettagliato è chsh -s /bin/bash. Ti verrà richiesto di inserire la password. La shell di accesso predefinita è /bin/bashora. È necessario disconnettersi e riconnettersi per vedere questa modifica.

Quanto segue è citato dalla pagina man:

Il comando chsh modifica la shell di accesso dell'utente. Ciò determina il nome del comando di accesso iniziale dell'utente. Un utente normale può modificare solo la shell di accesso per il proprio account, il superutente può modificare la shell di accesso per qualsiasi account

Questo comando modificherà permanentemente la shell di accesso predefinita.

Nota: se l'account utente è remoto, ad esempio sull'autenticazione Kerberos (ad es. Enterprise RHEL), non sarà possibile utilizzarlo chsh.


10
chsh: can only change local entries; use ypchsh instead. Quindi ypchsh non ha alcuna -sopzione
mahmood

10
@ShaktiMalik Credo che il file configure sia /etc/passwd, ma non ho ricontrollato.
Summer_More_More_Tea

30
È necessario disconnettersi e riconnettersi per vedere questa modifica.
Neil Traft,

22
Nel mio caso, avevo l'accesso come root ma non volevo sbagliare con nessuna configurazione sull'host reale. Ho aggiunto exec /bin/basha ~/.profile, e questo mi ha permesso per accedere direttamente a bash senza apportare alcuna modifica al server. (La shell di default originale era solo /bin/sh)
Paul Nelson Baker,

2
@BCqrstoO Grazie per questo. Ma cosa succede se si digita exitbash? Esci dal server direttamente o semplicemente esci da bash e in sh e un altro exitrichiesto per disconnettersi dal server?
Summer_More_More_Tea

148

È possibile modificare il file passwd direttamente per l'utente specifico o utilizzare il comando seguente

chsh -s /usr/local/bin/bash username

Quindi disconnettersi e accedere


8
Probabilmente una buona idea da provare which bashprima di invocare il comando sopra; il chilometraggio può variare in base alla posizione. Nel mio caso, è stato trovato in/bin/bash
Martin Haeberli il

Posso anche aggiungere che il chshcomando fa parte del util-linuxpacchetto; e chsh -s $(which bash) $USERdovrebbe risultare come sopra.

C'è anche -lun'opzione: "stampa l'elenco delle shell".
Betlista,

3
era chsh -s /bin/bash usernameper me
Salvatorelab il

Grazie! Questo mi ha aiutato quando ho provato a cambiarlo per un altro utente
Tobias Feil,

18

Dovresti avere uno 'scheletro' da qualche parte in /etc, probabilmente /etc/skeleton, o controllare le impostazioni predefinite, probabilmente /etc/defaulto qualcosa del genere. Questi sono script che definiscono le variabili di ambiente standard che vengono impostate durante un accesso.

Se è solo per il tuo account: controlla il file (nascosto) ~/.profilee ~/.login. O generali, se non esistono. Anche questi vengono valutati dal processo di accesso.


5
Più 1 per rispondere specificamente alla domanda (THE Default Shell). Su Red Hat Linux è specificato in/etc/default/useradd
geedoubleya il

@geedoubleya Puoi specificare qual è la differenza nella shell di default e di login?
Betlista,

1
Ciao @Betlista La shell predefinita è la shell utilizzata per una shell di accesso di nuovi utenti quando vengono creati a meno che non venga fornita una shell specifica come argomento.
geedoubleya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.