Am fost surprins că nu am găsit această întrebare deja pe site. Deci, astăzi a venit $
după ce m-am conectat ca utilizator nou. Acest lucru a fost neașteptat deoarece solicitarea utilizatorului meu principal începe cu username@computername:~$
.
Deci, cum pot trece de la acest lucru alt shell la bash?
Comentarii
Răspuns
Presupunând că shell-ul necunoscut acceptă executarea unei comenzi absolute, puteți încerca: /bin/bash
Pentru a schimba shell-ul implicit, aș folosi chsh(1)
. Exemplu de utilizare: chsh -s /bin/bash $USER
Comentarii
- Chsh schimbă permanent shell-ul sau doar pentru sesiunea curentă ?
- @mouche permanent; vă modifică intrarea în
/etc/passwd
- @mouche,
chsh(1)
va permite doar schimbarea într-un shell care este listat în/etc/shells
(și este disponibil, probabil).chsh -l
listează alternativele. Aveți grijă, unele (cum ar finologin
) sunt definite pentru conturile care nu ar trebui niciodată utilizate pentru a vă conecta (o modalitate frumoasă de a vă bloca), ar putea exista adăugiri locale pentru utilizări speciale.
Răspuns
Introduceți bash
. Dacă doriți ca aceasta să fie permanentă, schimbați shell-ul implicit în /bin/bash
editând /etc/passwd
.
Aici câteva fragmente din /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
Ultimul câmp conține shell-ul, modificând câmpul după ultimul :
la un shell valid sau nevalid va funcționa. /bin/false
și /sbin/nologin
ambele înseamnă utilizator nu are un shell de autentificare real, deși dacă pam nu este configurat corect acest lucru nu înseamnă că nu se pot autentifica (am raportat o eroare în acest sens în Arch Linux, deoarece vă puteți conecta grafic fără a avea un shell de conectare). /bin/bash
și /bin/zsh
sunt ambele shell-uri valide, consultați /etc/shells
pentru o listă de shell-uri valide pe sistemele tale. Iată /etc/shells
dacă vă interesează.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Da, puteți utiliza chsh
sau usermod
pentru a face aceleași lucruri, vă rugăm să nu uitați că acestea sunt doar fișiere text structurate și TIMTOWTDI.
Comentarii
- Probabil că doriți să utilizați
chsh
în loc să editați manualpasswd
- @Michael există aproximativ 5 (POOMA) moduri diferite de a schimba shell-ul în
/etc/passwd
Nu ' nu am avut chef să enumăr niciunul dintre ele , pentru că o fac întotdeauna manual. chsh și usermod pot să o facă ambele. - Încercarea cu fișierele de configurare este o idee proastă (TM), o eroare ar putea face sistemul inutilizabil. Da, este adesea singura / cea mai rapidă cale, dar apoi faceți-o cu extremă grijă .
Răspundeți
Dacă chsh sau editarea manuală a configurării nu va funcționa, dar un script ~ / .profile este executat la conectare, adăugați această linie:
exec /bin/bash --login
Comentarii
- După ce m-am uitat o vreme în jur, aceasta a fost soluția de care aveam nevoie. Mulțumesc!
- O idee grozavă, mai ales dacă shell-ul a selectat surse care au fișier la pornire …
-
touch ~/.bash_profile
sau altfel bash se va executa singur într-o buclă: bash ia~/.profile
în cazul în care~/.bash_profile
nu ' t există.
$
mai degrabă decâtusername@computername:~$
nu înseamnă ' nu înseamnă că nu era ' t bash. Formatarea exactă a promptului este setată de variabila PS1, care poate fi configurată sau personalizată diferit pentru diferiți utilizatori.echo $SHELL
pentru a afla care este shell-ul dvs. actual./bin/sh
adesea nu ' înseamnă prea mult că ' s de obicei un link simbolic către altceva. ' d tipls -l /bin/sh
pentru a vedea la ce ' este un link simbolic. În unele cazuri, fiind un link simbolic către ceva care își schimbă comportamentul, nu cred că ' nu cred că bash este așa.bash
ca/bin/sh
dezactivează multe caracteristici bash (intră în modul de conformitate POSIX).