Cum trec de la un shell necunoscut la bash?

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

  • Doar pentru că a apărut $ mai degrabă decât username@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.
  • @mouche Re: @frabjous echo $SHELL pentru a afla care este shell-ul dvs. actual.
  • @mouche @frabjous și începând cu un $ este de fapt obișnuit pentru bash, unele shell-uri non-bash precum zsh folosesc% out of the box, cred că alte shell-uri folosesc alte lucruri.
  • @mouche fiind /bin/sh adesea nu ' înseamnă prea mult că ' s de obicei un link simbolic către altceva. ' d tip ls -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.
  • @xenoterracide – Folosirea bash ca /bin/sh dezactivează multe caracteristici bash (intră în modul de conformitate POSIX).

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 fi nologin) 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 manual passwd
  • @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ă.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *