Înțelegerea fișierelor de inițializare Shell și a profilurilor de utilizator în Linux


Linux este un sistem multi-utilizator, de partajare a timpului, ceea ce implică faptul că mai mulți utilizatori se pot conecta și utiliza un sistem. Iar administratorii de sistem au sarcina de a gestiona diverse aspecte ale modului în care diferiți utilizatori pot opera un sistem în ceea ce privește instalarea/actualizarea/eliminarea software-ului, programele pe care le pot rula, fișierele pe care le pot vizualiza/edita și așa mai departe.

Linux permite, de asemenea, să fie create sau întreținute mediile utilizatorilor în două moduri majore: folosind configurații la nivel de sistem (global) și specifice utilizatorului (personale). În mod normal, metoda de bază de lucru cu un sistem Linux este shell-ul, iar shell-ul creează un mediu în funcție de anumite fișiere pe care le citește în timpul inițializării după o conectare cu succes a utilizatorului.

În acest articol, vom explica fișierele de inițializare shell în legătură cu profilurile de utilizator pentru gestionarea locală a utilizatorilor în Linux. Vă vom anunța unde să păstrați funcțiile shell personalizate, aliasurile, variabilele, precum și programele de pornire.

Important: în scopul acestui articol, ne vom concentra pe bash, un shell compatibil cu sh care este cel mai popular/folosit shell pe sistemele Linux de acolo.

Dacă utilizați un alt program shell (zsh, ash, fish etc..), citiți documentația acestuia pentru a afla mai multe despre unele dintre fișierele aferente despre care vom vorbi aici.

Inițializarea Shell în Linux

Când shell-ul este invocat, există anumite fișiere de inițializare/pornire pe care le citește, care ajută la configurarea unui mediu pentru shell-ul în sine și pentru utilizatorul sistemului; adică funcții predefinite (și personalizate), variabile, aliasuri și așa mai departe.

Există două categorii de fișiere de inițializare citite de shell:

  • Fișiere de pornire la nivel de sistem – tezele conțin configurații globale care se aplică tuturor utilizatorilor din sistem și sunt de obicei localizate în directorul /etc. Acestea includ: /etc/profiles și /etc/bashrc sau /etc/bash.bashrc.
  • Fișiere de pornire specifice utilizatorului – aceste configurații stochează care se aplică unui singur utilizator pe sistem și sunt în mod normal localizate în directorul de pornire al utilizatorilor sub formă de fișiere punct. Acestea pot suprascrie configurațiile la nivel de sistem. Acestea includ: .profiles, .bash_profile, .bashrc și .bash_login.

Din nou, shell-ul poate fi invocat în trei moduri posibile:

1. Shell de conectare interactiv

Shell-ul este invocat după ce un utilizator se conectează cu succes la sistem, folosind /bin/login, după ce a citit acreditările stocate în fișierul /etc/passwd.

Când shell-ul este pornit ca shell interactiv de conectare, acesta citește /etc/profile și echivalentul său specific utilizatorului ~/.bash_profile.

2. Shell interactiv non-login

Shell-ul este pornit la linia de comandă folosind un program shell, de exemplu $/bin/bash sau $/bin/zsh. De asemenea, poate fi pornit prin rularea comenzii /bin/su.

În plus, un shell interactiv non-login poate fi invocat și cu un program terminal, cum ar fi konsole, xterm dintr-un mediu grafic.

Când shell-ul este pornit în această stare, acesta copiază mediul shell-ului părinte și citește fișierul ~/.bashrc specific utilizatorului pentru instrucțiuni suplimentare de configurare de pornire.

$ su
# ls -la

3. Shell non-interactiv

Shell-ul este invocat atunci când rulează un script shell. În acest mod, procesează un script (set de comenzi/funcții de sistem shell sau generice) și nu necesită intrarea utilizatorului între comenzi, dacă nu este altfel. Funcționează folosind mediul moștenit de la shell-ul părinte.

Înțelegerea fișierelor de pornire Shell la nivel de sistem

În această secțiune, vom umbri mai mult fișierele de pornire shell care stochează configurații pentru toți utilizatorii din sistem și acestea includ:

Fișierul/etc/profile – stochează configurații de mediu la nivelul întregului sistem și programe de pornire pentru configurarea autentificărilor. Toate configurațiile pe care doriți să le aplicați tuturor mediilor utilizatorilor de sistem ar trebui adăugate în acest fișier.

De exemplu, puteți seta variabila globală de mediu PATH aici.

# cat /etc/profile

Notă: în anumite sisteme precum RHEL/CentOS 7, veți primi avertismente precum „Nu este recomandat să schimbați acest lucru dacă nu știți ce faceți. Este mult mai bine să creați un script shell personalizat .sh în /etc/profile.d/ pentru a face modificări personalizate în mediul dvs. deoarece acest lucru va preveni nevoia de fuziune în actualizările viitoare”.

Directorul /etc/profile.d/ – stochează scripturi shell folosite pentru a face modificări personalizate în mediul dumneavoastră:

# cd /etc/profile.d/
# ls  -l 

Fișierul /etc/bashrc sau /etc/bash.bashrc – conține funcții și aliasuri la nivel de sistem, inclusiv alte configurații care se aplică tuturor utilizatorilor sistemului.

Dacă sistemul dumneavoastră are mai multe tipuri de shell, este o idee bună să puneți configurații specifice bash în acest fișier.

# cat /etc/bashrc

Înțelegerea fișierelor de pornire Shell specifice utilizatorului

În continuare, vom explica mai multe despre fișierele punct de pornire shell (bash) specifice utilizatorului, care stochează configurații pentru un anumit utilizator pe sistem, sunt localizate în directorul principal al utilizatorului și includ:

# ls -la

Fișierul ~/.bash_profile – acesta stochează mediul specific utilizatorului și configurațiile programelor de pornire. Puteți seta variabila de mediu PATH personalizată aici, așa cum se arată în captura de ecran de mai jos:

# cat ~/.bash_profile

Fișierul ~/.bashrc – acest fișier stochează aliasuri și funcții specifice utilizatorului.

# cat ~/.bashrc

Fișierul ~/.bash_login – conține configurații specifice care sunt în mod normal executate numai atunci când vă conectați la sistem. Când ~/.bash_profile lipsește, acest fișier va fi citit de bash.

Fișierul ~/.profile – acest fișier este citit în absența ~/.bash_profile și ~/.bash_login; poate stoca aceleași configurații, care pot fi accesibile și de către alte shell-uri din sistem. Deoarece am vorbit în principal despre bash aici, rețineți că alte shell-uri ar putea să nu înțeleagă sintaxa bash.

În continuare, vom explica și alte două fișiere importante specifice utilizatorului, care nu sunt neapărat fișiere de inițializare bash:

Fișierul ~/.bash_history – bash păstrează un istoric al comenzilor care au fost introduse de un utilizator în sistem. Această listă de comenzi este păstrată în directorul de pornire al unui utilizator în fișierul ~/.bash_history.

Pentru a vizualiza această listă, tastați:

$ history 
or 
$ history | less

Fișierul ~/.bash_logout – nu este folosit pentru pornirea shell-ului, dar stochează instrucțiuni specifice utilizatorului pentru procedura de deconectare. Este citit și executat atunci când un utilizator iese dintr-un shell interactiv de conectare.

Un exemplu practic ar fi prin ștergerea ferestrei terminalului la deconectare. Acest lucru este important pentru conexiunile la distanță, care vor lăsa o fereastră curată după închiderea lor:

# cat bash_logout 

Pentru informații suplimentare, verificați conținutul acestor fișiere de inițializare a shell-ului pe diverse distribuții Linux și citiți, de asemenea, pagina de manual bash:

Asta este tot pentru acum! În acest articol, am explicat fișierele de pornire/inițializare shell în Linux. Folosește formularul de comentarii de mai jos pentru a ne scrie înapoi.