Sono rimasto sorpreso di non aver “trovato già questa domanda sul sito. Così, oggi è arrivato $
dopo aver effettuato laccesso come nuovo utente. Questo era inaspettato perché il prompt del mio utente principale inizia con username@computername:~$
.
Quindi, come faccio a passare da questo altra shell su cui bash?
Commenti
Risposta
Supponendo che la shell sconosciuta supporti lesecuzione di un comando assoluto, potresti provare: /bin/bash
Per modificare la shell predefinita, utilizzerei chsh(1)
. Utilizzo di esempio: chsh -s /bin/bash $USER
Commenti
- Chsh cambia in modo permanente la shell o solo per la sessione corrente ?
- @mouche Permanently; cambia la tua voce in
/etc/passwd
- @mouche,
chsh(1)
consentirà solo di passare a una shell elencata in/etc/shells
(ed è disponibile, presumibilmente).chsh -l
elenca le alternative. Fai attenzione, alcuni (comenologin
) sono definiti per account che non dovrebbero mai essere utilizzati per accedere (un bel modo per bloccarti), potrebbero esserci aggiunte locali per usi speciali.
Risposta
Digiti bash
. Se vuoi che sia permanente, modifica la shell predefinita in /bin/bash
modificando /etc/passwd
.
Here “s alcuni frammenti dal mio /etc/passwd
:
avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin
Lultimo campo contiene la shell, modificando il campo dopo lultimo :
su una shell valida o non valida funzionerà. /bin/false
e /sbin/nologin
indicano entrambi lutente non ha una vera shell di login, anche se se pam non è impostato correttamente questo non significa che non possano effettuare il login (ho segnalato un bug su questo in Arch Linux, perché puoi effettuare il login graficamente senza avere una shell di login). /bin/bash
e /bin/zsh
sono entrambe shell valide, vedere /etc/shells
per un elenco di shell valide su i tuoi sistemi. Ecco “il mio /etc/shells
se” sei interessato.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Sì, puoi usare chsh
o usermod
per fare le stesse cose, ricorda che questi sono solo file di testo strutturati e TIMTOWTDI.
Commenti
- Probabilmente vorrai utilizzare
chsh
invece di modificare manualmentepasswd
- @Michael ci sono circa 5 (POOMA) modi diversi per cambiare la shell in
/etc/passwd
Non ' ho voglia di elencarne nessuno , perché lo faccio sempre manualmente. chsh e usermod possono farlo entrambi. - Pasticciare con i file di configurazione è una cattiva idea (TM), un errore potrebbe rendere il sistema inutilizzabile. Sì, spesso è lunico / più veloce modo, ma poi fallo con estrema cura .
Risposta
Se chsh o la modifica manuale della configurazione non funziona, ma al login viene eseguito uno script ~ / .profile, aggiungi questa riga:
exec /bin/bash --login
Commenti
- Dopo essermi guardato intorno per un po , questa era la soluzione di cui avevo bisogno. Grazie!
- Ottima idea, specialmente se la shell ha selezionato quel file allavvio …
-
touch ~/.bash_profile
o altrimenti bash verrà eseguito da solo in un ciclo: bash richiede~/.profile
nel caso in cui~/.bash_profile
non ' non esiste.
$
è uscito invece diusername@computername:~$
non ' significa che non era ' t bash. La formattazione esatta del prompt è impostata dalla variabile PS1, che può essere impostata o personalizzata in modo diverso per i diversi utenti.echo $SHELL
per scoprire qual è la tua shell corrente./bin/sh
spesso ' non significa molto che ' di solito è un collegamento simbolico a qualcosaltro. ' d digitols -l /bin/sh
per vedere a cosa ' è un link simbolico. In alcuni casi essere un collegamento simbolico a qualcosa cambia il suo comportamento, non ' penso che bash sia così.bash
as/bin/sh
disabilita molte funzionalità di bash (entra in modalità di conformità POSIX).