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

Bash nu este singurul interpret de comenzi disponibil pentru Linux. Există numeroase alternative, iar Zsh este una dintre cele mai populare. Dacă descoperiți un interpret care vă atrage, puteți utiliza comanda `chsh` pentru a-l seta ca interpret implicit. În continuare, vom explora cum se realizează acest lucru.

Importanța unui Interpret de Comenzi

Interpretul de comenzi acționează ca o punte de legătură între utilizator și sistemul de operare. El asigură cadrul în interiorul ferestrei terminalului unde introduceți comenzi și lansați programe. Interpretul analizează instrucțiunile dumneavoastră și determină ce doriți să realizați. Dacă poate executa solicitările singur, o face, iar dacă are nevoie de asistență externă, caută programele potrivite pentru a îndeplini sarcinile.

Pe Linux există o varietate de interpreți de comenzi. Toți permit realizarea acelorași sarcini fundamentale, cum ar fi explorarea sistemului de fișiere, gestionarea fișierelor, lansarea programelor și execuția scripturilor. Cu toate acestea, fiecare interpret abordează aceste activități în mod unic, cu propriile caracteristici și particularități.

De obicei, interpreții de comenzi sunt dezvoltați de indivizi care preferă un anumit mod de funcționare. Dacă preferințele dumneavoastră se aliniază cu cele ale dezvoltatorului unui interpret, acesta ar putea fi opțiunea ideală pentru dumneavoastră. În plus, Linux permite testarea facilă a diferitelor interpreți.

În majoritatea distribuțiilor Linux, inclusiv Ubuntu, interpretul implicit este bash. Acesta este eficient și foarte competent. Totuși, alt interpret ar putea oferi optimizări care ar impacta semnificativ fluxul de lucru. Pentru a descoperi, trebuie să explorați!

O Gamă Largă de Interpreți

Am discutat anterior despre diferiții interpreți Linux. Iată un sumar al celor mai utilizați:

bash: Acest interpret Bourne este implicit în multe distribuții.
rbash: Este o versiune restricționată a bash, care oferă funcționalitate limitată utilizatorilor sau scripturilor care rulează prin el.
ash: Interpretul Almquist este o variantă mai ușoară a bash.
dash: Debian Almquist Shell este interpretul implicit pentru scripturi în Ubuntu. Deși bash este interpretul implicit de autentificare și interactiv, dash este folosit pentru rularea proceselor sistemului datorită greutății sale reduse comparativ cu bash.
zsh: Interpretul Z este o versiune modernă a bash, cu îmbunătățiri semnificative, precum verificarea ortografică a comenzilor și sugestii de corecții.
fish: Acest interpret interactiv prietenos a fost dezvoltat de la zero, fără legătură cu familiile de interpreți precedente. El este conceput pentru ușurința de utilizare. Printre alte avantaje, fish oferă sugestii de comenzi bazate pe istoricul dumneavoastră și conținutul directorului curent, similar cu textul predictiv.
ksh: KornShell oferă un limbaj de scripting deosebit de puternic.

Afișarea Interpreților Instalați

Pentru a vedea care interpreți sunt prezenți pe sistemul dumneavoastră, utilizați această comandă. Aceasta afișează conținutul fișierului `/etc/shells`:

cat /etc/shells

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

`sh` este interpretul Thompson, creat în 1971 de Ken Thompson de la Laboratoarele Bell. Nu mai este întreținut și a fost înlocuit de interpreții moderni. Este inclus doar pentru a asigura compatibilitatea cu scripturile mai vechi care încă au următoarea linie:

#!/bin/sh

Aceasta instruiește sistemul să utilizeze interpretul `sh` pentru a executa scriptul. Aveți chiar acel interpret vechi pe sistemul dumneavoastră și este utilizat pentru a rula scripturile? Comanda care ne va indica programul real executat când introduceți o comandă:

Să aflăm ce se execută când tastați `sh`:

which sh

Aceasta pare a găsi un fișier binar. Dacă analizăm mai în profunzime, vom observa că este o legătură simbolică către `dash`, interpretul ușor folosit pentru a executa scripturi:

ls -l /bin/sh

Acesta este o modalitate elegantă și simplă de a oferi o plasă de siguranță pentru scripturile care se așteaptă să găsească `sh` pe sistemele moderne.

Instalarea unui Alt Interpret

Să instalăm interpretul fish și să-l setăm ca implicit pentru utilizatorul Dave. Pe Ubuntu, tastați următoarea comandă:

sudo apt-get install fish

Pe Manjaro, utilizați pacman:

sudo pacman -Sy fish

Pe Fedora, tastați:

sudo dnf install fish

Când instalarea este completă, verificați din nou interpreții instalați:

cat /etc/shells

Noul nostru interpret apare ca `/usr/bin/fish`. Rețineți această cale – veți avea nevoie de ea curând.

Variabila de Mediu $SHELL

Variabila de mediu `$SHELL` stochează numele interpretului curent. Putem verifica valoarea acesteia cu comanda `echo`:

echo $SHELL

Să pornim interpretul fish:

fish

Să verificăm din nou ce afișează variabila de mediu `$SHELL`:

echo $SHELL

Prima oară când folosim `echo $SHELL`, ne aflăm în interpretul bash. Variabila de mediu conține calea către executabilul bash, `/bin/bash`.

Când lansăm interpretul fish, primim un mesaj de bun venit și promptul de comandă se schimbă. Ceea ce poate fi surprinzător este că variabila de mediu `$SHELL` încă indică calea către executabilul bash, `/bin/bash`. Este în regulă, este normal.

Când lansați un nou interpret (sau orice alt program), acesta moștenește mediul interpretului părinte. Așadar, interpretul fish preia variabilele de mediu globale și exportate de la interpretul bash. Deoarece valoarea variabilei de mediu `$SHELL` nu a fost modificată, aceasta are aceeași valoare în interpretul fish ca și în bash.

Interpretorul fish rulează ca orice alt program. De asemenea, putem folosi comanda `exit` pentru a închide interpretul fish. Se închide ca orice alt program și revenim la interpretul bash.

Este excelent pentru a testa noi interpreți și a le evalua capacitățile. Puteți explora înainte de a face tranziția și a adopta unul ca interpret implicit.

Dacă decideți să faceți fish sau alt interpret implicit, trebuie să utilizați comanda `chsh`.

Comanda chsh

Comanda `chsh` permite modificarea interpretului implicit. Trebuie să știți că aceasta vă permite să schimbați atât interpretul de conectare, cât și interpretul interactiv implicit. S-ar putea să doriți să schimbați doar unul dintre acești interpreți sau pe amândoi.

De fiecare dată când vă conectați, se utilizează interpretul configurat ca interpret de conectare. Atunci când sunteți deja conectat și deschideți o fereastră de terminal, se utilizează interpretul configurat ca interpret interactiv. Aceștia pot fi același interpret sau interpreți diferiți.

Pentru a seta interpretul de conectare, utilizați `chsh` fără parametri:

chsh

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

Dacă efectuăm o conexiune de la distanță la acest computer de test de pe un altul, ne vom regăsi în interpretul fish după conectare.

Pentru a modifica interpretul interactiv, utilizați `chsh` cu opțiunea `-s` (shell). Introduceți calea către noul interpret pe linia de comandă:

chsh -s /usr/bin/fish

Vi se cere parola și reveniți la promptul de comandă al interpretului dumneavoastră curent. Trebuie să vă deconectați și să vă reconectați pentru ca modificarea să aibă efect. După reconectare, veți vedea mesajul de bun venit și promptul de comandă cu interpretul fish.

Variabila de mediu `$SHELL` conține acum calea către noul dumneavoastră interpret implicit:

echo $SHELL

Modificarea Interpretului unui Alt Cont de Utilizator

Dacă aveți privilegii de root și puteți utiliza `sudo`, puteți modifica interpreții altor conturi de utilizator. Comanda este aceeași ca înainte, cu adăugarea numelui de utilizator pe linia de comandă:

sudo chsh -s /usr/bin/fish mary

Când Mary se va conecta data viitoare, va observa noul interpret când va deschide o fereastră de terminal.

Concluzie