Cum să vă schimbați Shell implicit pe Linux cu chsh

Bash nu este singurul shell Linux. Este ușor să încerci alte shell-uri, cum ar fi Zsh, care este foarte popular. Când ați găsit unul care vă place, utilizați comanda chsh pentru a-l transforma în shell-ul implicit. Vă vom arăta cum.

De ce este important un Shell

Cochilia se află între tine și sistemul de operare. Oferă mediul în interiorul unei ferestre de terminal care vă permite să introduceți comenzi și să rulați programe. Shell-ul vă verifică intrarea și își dă seama ce doriți. Dacă vă poate îndeplini singur licitarea, o face. Dacă are nevoie de ajutor extern, caută calea și găsește programele care pot face orice ai solicitat.

Există multe shell-uri diferite disponibile pe Linux. Toate vă permit să efectuați aceleași sarcini de bază: explorați sistemul de fișiere, lucrați cu fișiere, lansați programe și rulați scripturi. Cu toate acestea, fiecare îndeplinește aceste sarcini în felul său și are propriile caracteristici și idiosincrazii speciale.

Cochiliile tind să fie proiectate de oameni care doresc ca lucrurile să se comporte într-un mod specific. Dacă gândirea ta se aliniază cu cea a acelui designer, acea înveliș ar putea fi potrivită pentru tine. În plus, este ușor să încerci un nou shell pe Linux.

În majoritatea distribuțiilor Linux, inclusiv Ubuntu, shell-ul implicit este bash. Face o treabă grozavă și este foarte capabil. Cu toate acestea, un alt shell ar putea oferi o diferență de economisire a timpului care ar avea un impact mare asupra fluxului de lucru. Nu vei ști niciodată dacă nu te uiți!

O găleată plină de scoici

Am acoperit mai înainte diferitele shell-uri Linux, dar iată o introducere rapidă la cele mai comune:

  Cum să faci o copie de rezervă a setărilor desktopului Gnome Shell pe Linux

bash: The Bourne din nou shell este implicit în multe distribuţii.
rbash: Asta Restricţionat shell-ul bash oferă funcționalitate minimă persoanei sau scriptului care rulează în el.
Ash: The coajă Almquist este o versiune mai ușoară a bash.
liniuță: Debian Alquist Shell este script shell implicit în Ubuntu. În timp ce bash este autentificarea implicită și shell-ul interactiv, dash este folosit pentru a rula procesele de sistem, deoarece este mult mai ușor decât bash.
zsh: Cochilia Z este o interpretare modernă a familiei de scoici bash. Oferă îmbunătățiri clare, cum ar fi verificările ortografice ale comenzilor și corecțiile sugerate.
peste: asta shell interactiv prietenos a fost scris de la zero și nu este derivat din niciuna dintre celelalte familii de shell. Este destinat să fie ușor de utilizat. Printre multe alte avantaje ale sale, fish oferă sugestii pentru comenzi bazate pe istoricul dvs. și conținutul folderului curent, similar cu text predictiv.
ksh: KornShell oferă un limbaj de scripting deosebit de puternic.

Listați Shell-urile instalate

Pentru a vedea ce shell-uri sunt instalate pe computer, utilizați această comandă. Pur și simplu listează conținutul fișierului /etc/shells:

cat /etc/shells

Am menționat bash, dash și rbash, dar ce este sh?

sh este Thompson shell, scrisă în 1971 de Ken Thompson de Laboratoarele Bell faimă. Nu mai este întreținut și de mult a fost înlocuit de scoici moderne. Este inclus doar pentru a menține compatibilitatea cu scripturile mai vechi care au încă următoarele ca primă linie:

#!/bin/sh

Acest lucru indică sistemului să folosească shell-ul sh pentru a executa scriptul. Chiar aveți acel shell antic pe mașina dvs. și este folosit pentru a vă rula scripturile? Comanda care ne va spune ce program rulează de fapt atunci când introduceți o comandă.

Să vedem ce rulează când tastați sh:

which sh

Aceasta pare să găsească un binar. dacă săpăm puțin mai adânc, totuși, vom vedea că este o legătură simbolică care indică de fapt liniuța, shell-ul ușor folosit pentru a executa scripturi:

ls -l /bin/sh

Acesta este un mod elegant și ușor de a oferi o plasă de siguranță pentru scripturile care se așteaptă să găsească sh pe sistemele moderne.

  Cum să înregistrați ieșirea difuzorului pe Linux

Instalarea unui alt Shell

Să instalăm cochilia de pește și să o setăm ca implicită pentru Dave. Pe Ubuntu, tastăm următoarea comandă:

sudo apt-get install fish

Pe Manjaro, folosește pacman:

sudo pacman -Sy fish

Pe Fedora, tastați următoarele:

sudo dnf install fish

Când instalarea este completă, puteți verifica încă o dată shell-urile instalate:

cat /etc/shells

Noul nostru shell apare ca /usr/bin/fish. Luați notă de acea cale – veți avea nevoie de ea în scurt timp.

Variabila de mediu $SHELL

Variabila de mediu $SHELL deține numele shell-ului dvs. curent. Putem verifica pe care este setat cu echo:

echo $SHELL

Să începem coaja de pește:

fish

Acum, să verificăm din nou ce spune variabila de mediu $SHELL:

echo $SHELL

Prima dată când folosim echo $SHELL, ne aflăm în shell-ul bash. Variabila de mediu deține calea către executabilul bash, /bin/bash.

Când lansăm cochilia de pește, primim un mesaj prietenos de bun venit și promptul de comandă se schimbă. Ceea ce ar putea fi surprinzător este că mediul $SHELL încă deține calea către executabilul bash, /bin/bash. E în regulă, este normal.

Când lansați un nou shell (sau orice alt program), acesta moștenește mediul shell-ului părinte. Deci, shell-ul de pește moștenește variabilele de mediu globale și exportate din shell-ul bash. Deoarece valoarea din variabila de mediu $SHELL nu a fost modificată, aceasta are aceeași valoare în shell-ul de pește ca și în shell-ul bash.

Derulăm pește ca orice alt program. De asemenea, putem folosi exit pentru a ieși din cochilia de pește. Se închide ca orice alt program și ne întoarcem la shell-ul bash.

  De ce mai contează Desktop Linux

Este grozav pentru a încerca noi cochilii, pentru a vedea ce pot face și dacă te înțelegi cu ele. Puteți explora înainte să faceți saltul și să adoptați unul ca coajă de bază.

Dacă decideți să faceți din pește sau orice altă cochilie implicită, va trebui să utilizați comanda chsh.

Comanda chsh

Comanda chsh vă permite să vă schimbați shell-ul implicit. Trucul este să știți că vă permite să schimbați atât login-ul implicit, cât și shell-urile interactive implicite. Poate doriți să schimbați unul sau celălalt, sau ambele.

Ori de câte ori vă conectați pentru a obține un prompt de comandă, utilizați shell-ul configurat să fie shell-ul dvs. de conectare. Când sunteți deja autentificat și deschideți o fereastră de terminal, utilizați shell-ul configurat să fie shell-ul dvs. interactiv. Acestea pot fi aceleași sau diferite cochilii.

Pentru a vă seta shell-ul de conectare, utilizați chsh fără parametri:

chsh

Vi se solicită parola. Apoi, trebuie să tastați calea către noul shell și să apăsați Enter.

Dacă facem o conexiune de la distanță la acest computer de testare de la altul, ne vom găsi în scoica de pește odată ce ne vom conecta.

Pentru a vă schimba shell-ul interactiv, utilizați chsh cu opțiunea -s (shell). Transmite calea către noul shell pe linia de comandă:

chsh -s /usr/bin/fish

Vi se solicită parola și reveniți la promptul de comandă al shell-ului dvs. actual. Trebuie să vă deconectați și să vă reconectați pentru ca modificarea să intre în vigoare. Când o faceți, veți vedea mesajul de întâmpinare și promptul de comandă cu coajă de pește.

Variabila de mediu $SHELL deține acum calea către noul tău shell implicit:

echo $SHELL

Schimbarea Shell al unui alt cont de utilizator

Dacă aveți privilegii de root și puteți utiliza sudo, puteți schimba shell-urile altor conturi de utilizator. Comanda este aceeași ca înainte, cu adăugarea numelui de utilizator al acelei persoane adăugat la linia de comandă:

sudo chsh -s /usr/bin/fish mary

Când Mary se va conecta următoarea, va vedea noul shell când deschide o fereastră de terminal.

Fiecare