Come si passa da una shell sconosciuta a bash?

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

  • Solo perché $ è uscito invece di username@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.
  • @mouche Re: @frabjous echo $SHELL per scoprire qual è la tua shell corrente.
  • @mouche @frabjous e che inizia con $ è in realtà comune per bash, alcune shell non bash come zsh usano% out of the box, credo che altre shell usino altre cose.
  • @mouche essendo /bin/sh spesso ' non significa molto che ' di solito è un collegamento simbolico a qualcosaltro. ' d digito ls -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ì.
  • @xenoterracide – Uso di bash as /bin/sh disabilita molte funzionalità di bash (entra in modalità di conformità POSIX).

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 (come nologin) 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 manualmente passwd
  • @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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *