Zoeken op website

Shell-initialisatiebestanden en gebruikersprofielen in Linux begrijpen


Linux is een timesharingsysteem voor meerdere gebruikers, wat inhoudt dat meer dan één gebruiker kan inloggen en een systeem kan gebruiken. En systeembeheerders hebben de taak om verschillende aspecten te beheren van hoe verschillende gebruikers een systeem kunnen bedienen in termen van het installeren/bijwerken/verwijderen van software, programma's die ze kunnen uitvoeren, bestanden die ze kunnen bekijken/bewerken enzovoort.

Met Linux kunnen gebruikersomgevingen ook op twee belangrijke manieren worden gemaakt of onderhouden: met behulp van systeembrede (algemene) en gebruikersspecifieke (persoonlijke) configuraties. Normaal gesproken is de shell de basismethode voor het werken met een Linux-systeem, en de shell creëert een omgeving afhankelijk van bepaalde bestanden die hij leest tijdens de initialisatie ervan na een succesvolle gebruikersaanmelding.

Voorgesteld leesvoer: Omgevingsvariabelen instellen in Linux

In dit artikel leggen we shell-initialisatiebestanden uit in relatie tot gebruikersprofielen voor lokaal gebruikersbeheer in Linux. We laten u weten waar u aangepaste shell-functies, aliassen, variabelen en opstartprogramma's kunt bewaren.

Belangrijk: voor de doeleinden van dit artikel zullen we ons concentreren op bash, een sh compatibele shell die de meest populaire/gebruikte shell op Linux-systemen die er zijn.

Als je een ander shell-programma (zsh, ash, fish enz.) gebruikt, lees dan de documentatie ervan door om meer te weten te komen over enkele van de gerelateerde bestanden waar we het hier over zullen hebben.

Shell-initialisatie in Linux

Wanneer de shell wordt aangeroepen, worden er bepaalde initialisatie-/opstartbestanden gelezen die helpen bij het opzetten van een omgeving voor de shell zelf en de systeemgebruiker; dat zijn vooraf gedefinieerde (en aangepaste) functies, variabelen, aliassen enzovoort.

Er zijn twee categorieën initialisatiebestanden die door de shell worden gelezen:

  • systeembrede opstartbestanden – deze bevatten algemene configuraties die van toepassing zijn op alle gebruikers op het systeem, en bevinden zich meestal in de map /etc. Deze omvatten: /etc/profiles en /etc/bashrc of /etc/bash.bashrc.
  • gebruikerspecifieke opstartbestanden – deze slaan configuraties op die van toepassing zijn op een enkele gebruiker op het systeem en bevinden zich normaal gesproken in de thuismap van de gebruiker als puntbestanden. Ze kunnen de systeembrede configuraties overschrijven. Deze omvatten: .profiles, .bash_profile, .bashrc en .bash_login.

Nogmaals, de shell kan in drie mogelijke modi worden aangeroepen:

1. Interactieve loginshell

De shell wordt aangeroepen nadat een gebruiker succesvol heeft ingelogd op het systeem met behulp van /bin/login, na het lezen van de inloggegevens die zijn opgeslagen in het /etc/passwd bestand.

Wanneer de shell wordt gestart als een interactieve login-shell, leest deze de /etc/profile en het gebruikersspecifieke equivalent ~/.bash_profile.

2. Interactieve Shell zonder login

De shell wordt gestart vanaf de opdrachtregel met behulp van een shell-programma, bijvoorbeeld $/bin/bash of $/bin/zsh. Het kan net zo goed worden gestart door de opdracht /bin/su uit te voeren.

Bovendien kan een interactieve niet-inlogshell ook worden aangeroepen met een terminalprogramma zoals konsole, terminator of xterm vanuit een grafische omgeving.

Wanneer de shell in deze staat wordt gestart, kopieert deze de omgeving van de bovenliggende shell en leest het gebruikersspecifieke ~/.bashrc bestand voor aanvullende instructies voor de opstartconfiguratie.

su
ls -la

3. Niet-interactieve shell

De shell wordt aangeroepen wanneer een shellscript wordt uitgevoerd. In deze modus verwerkt het een script (een set shell- of generieke systeemopdrachten/functies) en vereist het geen gebruikersinvoer tussen opdrachten, tenzij anders. Het werkt met behulp van de omgeving die is geërfd van de bovenliggende shell.

Systeembrede Shell-opstartbestanden begrijpen

In deze sectie zullen we meer licht werpen op shell-opstartbestanden die configuraties opslaan voor alle gebruikers op het systeem, waaronder:

Het /etc/profile bestand – hierin worden systeembrede omgevingsconfiguraties en opstartprogramma's opgeslagen voor het instellen van het inloggen. Alle configuraties die u wilt toepassen op de omgevingen van alle systeemgebruikers moeten in dit bestand worden toegevoegd.

U kunt hier bijvoorbeeld de globale PATH-omgevingsvariabele instellen.

cat /etc/profile

Opmerking: in bepaalde systemen, zoals RHEL/CentOS 7, krijg je waarschuwingen als 'Het wordt niet aanbevolen om dit bestand te wijzigen, tenzij je weet wat je doet. Het is veel beter om een aangepast .sh shellscript te maken in /etc/profile.d/ om aangepaste wijzigingen in uw omgeving aan te brengen, omdat dit de noodzaak van samenvoegen voorkomt toekomstige updates ”.

In de map /etc/profile.d/ worden shellscripts opgeslagen die worden gebruikt om aangepaste wijzigingen in uw omgeving aan te brengen:

cd /etc/profile.d/
ls  -l 

Het bestand /etc/bashrc of /etc/bash.bashrc bevat systeembrede functies en aliassen, inclusief andere configuraties die van toepassing zijn op alle systeemgebruikers.

Als uw systeem meerdere soorten shells heeft, is het een goed idee om bash-specifieke configuraties in dit bestand te plaatsen.

cat /etc/bashrc

Gebruikersspecifieke Shell-opstartbestanden begrijpen

Vervolgens zullen we meer uitleggen over gebruikersspecifieke shell (bash) opstartpuntbestanden, die configuraties voor een bepaalde gebruiker op het systeem opslaan. Ze bevinden zich in de thuismap van een gebruiker en omvatten:

ls -la

Het ~/.bash_profile bestand – hierin worden gebruikersspecifieke omgevings- en opstartprogrammaconfiguraties opgeslagen. U kunt hier uw aangepaste PATH-omgevingsvariabele instellen, zoals weergegeven in de onderstaande schermafbeelding:

cat ~/.bash_profile

Het ~/.bashrc bestand – dit bestand slaat gebruikerspecifieke aliassen en functies op.

cat ~/.bashrc

Het ~/.bash_login bestand – het bevat specifieke configuraties die normaal gesproken alleen worden uitgevoerd wanneer u inlogt op het systeem. Wanneer het ~/.bash_profile afwezig is, zal dit bestand door bash worden gelezen.

Het ~/.profile bestand – dit bestand wordt gelezen als ~/.bash_profile en ~/.bash_login ontbreken; het kan dezelfde configuraties opslaan, die ook toegankelijk zijn voor andere shells op het systeem. Omdat we het hier vooral over bash hebben gehad, moet je er rekening mee houden dat andere shells de bash-syntaxis mogelijk niet begrijpen.

Vervolgens zullen we ook twee andere belangrijke gebruikersspecifieke bestanden uitleggen die niet noodzakelijkerwijs bash-initialisatiebestanden zijn:

Het bestand ~/.bash_history – bash houdt een geschiedenis bij van opdrachten die door een gebruiker op het systeem zijn ingevoerd. Deze lijst met opdrachten wordt bewaard in de thuismap van een gebruiker in het bestand ~/.bash_history.

Om deze lijst te bekijken, typt u:

history 
or 
history | less

Het ~/.bash_logout bestand – het wordt niet gebruikt voor het opstarten van de shell, maar bevat gebruikersspecifieke instructies voor de uitlogprocedure. Het wordt gelezen en uitgevoerd wanneer een gebruiker een interactieve login-shell verlaat.

Een praktisch voorbeeld is het leegmaken van het terminalvenster bij het uitloggen. Dit is belangrijk voor externe verbindingen, die na het sluiten een schoon venster achterlaten:

cat bash_logout 

Voor meer inzichten kun je de inhoud van deze shell-initialisatiebestanden op verschillende Linux-distributies bekijken en ook de bash-manpagina lezen:

Dat is het voor nu! In dit artikel hebben we shell-opstart-/initialisatiebestanden in Linux uitgelegd. Gebruik het onderstaande reactieformulier om ons terug te schrijven.