Entendre els fitxers d'inicialització de Shell i els perfils d'usuari a Linux


Linux és un sistema de temps compartit multiusuari, la qual cosa implica que més d'un usuari pot iniciar sessió i utilitzar un sistema. I els administradors del sistema tenen la tasca de gestionar diversos aspectes de com els diferents usuaris poden operar un sistema en termes d'instal·lació/actualització/eliminació de programari, programes que poden executar, fitxers que poden veure/editar, etc.

Linux també permet crear o mantenir els entorns dels usuaris de dues maneres principals: utilitzant configuracions de tot el sistema (global) i específiques de l'usuari (personals). Normalment, el mètode bàsic per treballar amb un sistema Linux és l'intèrpret d'ordres, i l'intèrpret d'ordres crea un entorn en funció de determinats fitxers que llegeix durant la seva inicialització després d'una sessió d'usuari correcta.

En aquest article, explicarem els fitxers d'inicialització de l'intèrpret d'ordres en relació amb els perfils d'usuari per a la gestió local d'usuaris a Linux. Us indicarem on guardar les funcions de l'intèrpret d'ordres personalitzades, els àlies, les variables i els programes d'inici.

Important: per als propòsits d'aquest article, ens centrarem en bash, un intèrpret d'ordres compatible amb sh que és el més popular/utilitzat als sistemes Linux.

Si utilitzeu un programa shell diferent (zsh, ash, fish, etc.), llegiu la seva documentació per obtenir més informació sobre alguns dels fitxers relacionats dels quals parlarem aquí.

Inicialització de Shell a Linux

Quan s'invoca l'intèrpret d'ordres, hi ha certs fitxers d'inicialització/inici que llegeix que ajuden a configurar un entorn per a l'intèrpret d'ordres i l'usuari del sistema; que són funcions predefinides (i personalitzades), variables, àlies, etc.

Hi ha dues categories de fitxers d'inicialització llegits pel shell:

  • Fitxers d'inici de tot el sistema: les tesis contenen configuracions globals que s'apliquen a tots els usuaris del sistema, i normalment es troben al directori /etc. Inclouen: /etc/profiles i /etc/bashrc o /etc/bash.bashrc.
  • Fitxers d'inici específics de l'usuari: aquests emmagatzemen configuracions que s'apliquen a un sol usuari del sistema i que normalment es troben al directori d'inici dels usuaris com a fitxers de punts. Poden anul·lar les configuracions de tot el sistema. Inclouen: .profiles, .bash_profile, .bashrc i .bash_login.

De nou, l'intèrpret d'ordres es pot invocar de tres maneres possibles:

L'intèrpret d'ordres s'invoca després que un usuari hagi iniciat sessió correctament al sistema, utilitzant /bin/login, després de llegir les credencials emmagatzemades al fitxer /etc/passwd.

Quan l'intèrpret d'ordres s'inicia com a intèrpret d'ordres d'inici de sessió interactiu, llegeix el /etc/profile i el seu equivalent específic per a l'usuari ~/.bash_profile.

L'intèrpret d'ordres s'inicia a la línia d'ordres mitjançant un programa d'intèrpret d'ordres, per exemple $/bin/bash o $/bin/zsh. També es pot iniciar executant l'ordre /bin/su.

A més, també es pot invocar un intèrpret d'ordres interactiu sense inici de sessió amb un programa de terminal com ara konsole, xterm des d'un entorn gràfic.

Quan l'intèrpret d'ordres s'inicia en aquest estat, copia l'entorn de l'intèrpret d'ordres principal i llegeix el fitxer ~/.bashrc específic de l'usuari per obtenir instruccions de configuració d'inici addicionals.

$ su
# ls -la

L'intèrpret d'ordres s'invoca quan s'està executant un script d'intèrpret d'ordres. En aquest mode, està processant un script (conjunt d'ordres/funcions genèriques del sistema o de l'intèrpret d'ordres) i no requereix l'entrada de l'usuari entre ordres tret que s'indiqui el contrari. Funciona utilitzant l'entorn heretat de l'intèrpret d'ordres pare.

Entendre els fitxers d'inici de Shell a tot el sistema

En aquesta secció, donarem més llum als fitxers d'inici de l'intèrpret d'ordres que emmagatzemen configuracions per a tots els usuaris del sistema i aquests inclouen:

El fitxer /etc/profile: emmagatzema configuracions d'entorn de tot el sistema i programes d'inici per a la configuració d'inici de sessió. Totes les configuracions que vulgueu aplicar a tots els entorns dels usuaris del sistema s'han d'afegir en aquest fitxer.

Per exemple, aquí podeu configurar la variable d'entorn PATH global.

# cat /etc/profile

Nota: En determinats sistemes com RHEL/CentOS 7, rebreu advertències com \No es recomana canviar aquest fitxer tret que sàpigues què estàs fent. És molt millor crear un script d'intèrpret d'ordres .sh personalitzat a /etc/ profile.d/ per fer canvis personalitzats al vostre entorn, ja que això evitarà la necessitat de fusionar-los en futures actualitzacions”.

El directori /etc/profile.d/: emmagatzema els scripts d'intèrpret d'ordres utilitzats per fer canvis personalitzats al vostre entorn:

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

El fitxer /etc/bashrc o /etc/bash.bashrc: conté funcions i àlies de tot el sistema, incloent altres configuracions que s'apliquen a tots els usuaris del sistema.

Si el vostre sistema té diversos tipus d'intèrprets d'ordres, és una bona idea posar configuracions específiques de bash en aquest fitxer.

# cat /etc/bashrc

Entendre els fitxers d'inici de Shell específics de l'usuari

A continuació, explicarem més sobre els fitxers de punts d'inici de l'intèrpret d'ordres específics de l'usuari (bash), que emmagatzemen configuracions per a un usuari concret al sistema, es troben al directori d'inici d'un usuari i inclouen:

# ls -la

El fitxer ~/.bash_profile: emmagatzema l'entorn específic de l'usuari i les configuracions dels programes d'inici. Podeu configurar la vostra variable d'entorn PATH personalitzada aquí, tal com es mostra a la captura de pantalla següent:

# cat ~/.bash_profile

El fitxer ~/.bashrc: aquest fitxer emmagatzema àlies i funcions específics de l'usuari.

# cat ~/.bashrc

El fitxer ~/.bash_login: conté configuracions específiques que normalment només s'executen quan inicieu sessió al sistema. Quan no hi ha ~/.bash_profile, bash llegirà aquest fitxer.

El fitxer ~/.profile: aquest fitxer es llegeix en absència de ~/.bash_profile i ~/.bash_login; pot emmagatzemar les mateixes configuracions, que també poden ser accessibles per altres shells del sistema. Com que aquí hem parlat principalment de bash, tingueu en compte que és possible que altres shells no entenguin la sintaxi de bash.

A continuació, també explicarem altres dos fitxers específics d'usuari importants que no són necessàriament fitxers d'inicialització de bash:

El fitxer ~/.bash_history: bash manté un historial d'ordres introduïdes per un usuari al sistema. Aquesta llista d'ordres es conserva al directori inicial d'un usuari al fitxer ~/.bash_history.

Per veure aquesta llista, escriviu:

$ history 
or 
$ history | less

El fitxer ~/.bash_logout: no s'utilitza per a l'inici de l'intèrpret d'ordres, però emmagatzema instruccions específiques de l'usuari per al procediment de tancament de sessió. Es llegeix i s'executa quan un usuari surt d'un shell d'inici de sessió interactiu.

Un exemple pràctic seria esborrant la finestra del terminal quan tanqueu la sessió. Això és important per a les connexions remotes, que deixaran una finestra neta després de tancar-les:

# cat bash_logout 

Per obtenir informació addicional, consulteu el contingut d'aquests fitxers d'inicialització de l'intèrpret d'ordres en diverses distribucions de Linux i també llegiu la pàgina man de bash:

Això és tot per ara! En aquest article, vam explicar els fitxers d'inici/inicialització de l'intèrpret d'ordres a Linux. Utilitzeu el formulari de comentaris a continuació per escriure'ns.