Recherche de site Web

Comprendre les fichiers d'initialisation du shell et les profils utilisateur sous Linux


Linux est un système multi-utilisateurs à temps partagé, ce qui implique que plusieurs utilisateurs peuvent se connecter et utiliser un système. Et les administrateurs système ont pour tâche de gérer divers aspects de la façon dont les différents utilisateurs peuvent exploiter un système en termes d'installation/mise à jour/suppression de logiciels, de programmes qu'ils peuvent exécuter, de fichiers qu'ils peuvent afficher/modifier, etc.

Linux permet également de créer ou de maintenir les environnements des utilisateurs de deux manières principales : en utilisant des configurations à l'échelle du système (globales) et spécifiques à l'utilisateur (personnel). Normalement, la méthode de base pour travailler avec un système Linux est le shell, et le shell crée un environnement en fonction de certains fichiers qu'il lit lors de son initialisation après une connexion utilisateur réussie.

Lecture suggérée : Comment définir des variables d'environnement sous Linux

Dans cet article, nous expliquerons les fichiers d'initialisation du shell en relation avec les profils utilisateur pour la gestion des utilisateurs locaux sous Linux. Nous vous indiquerons où conserver les fonctions shell personnalisées, les alias, les variables ainsi que les programmes de démarrage.

Important : pour les besoins de cet article, nous nous concentrerons sur bash, un shell compatible sh qui est le shell le plus populaire/utilisé sur les systèmes Linux.

Si vous utilisez un autre programme shell (zsh, ash, fish, etc.), lisez sa documentation pour en savoir plus sur certains des fichiers associés dont nous parlerons ici.

Initialisation du shell sous Linux

Lorsque le shell est invoqué, il lit certains fichiers d'initialisation/démarrage qui aident à configurer un environnement pour le shell lui-même et l'utilisateur du système ; c'est-à-dire des fonctions prédéfinies (et personnalisées), des variables, des alias, etc.

Il existe deux catégories de fichiers d'initialisation lus par le shell :

  • fichiers de démarrage à l'échelle du système : ils contiennent des configurations globales qui s'appliquent à tous les utilisateurs du système et se trouvent généralement dans le répertoire /etc. Ils incluent : /etc/profiles et /etc/bashrc ou /etc/bash.bashrc.
  • fichiers de démarrage spécifiques à l'utilisateur : ces configurations de magasin qui s'appliquent à un seul utilisateur sur le système et sont normalement situées dans le répertoire personnel de l'utilisateur sous forme de fichiers point. Ils peuvent remplacer les configurations à l’échelle du système. Ils incluent : .profiles, .bash_profile, .bashrc et .bash_login.

Encore une fois, le shell peut être invoqué dans trois modes possibles :

1. Shell de connexion interactif

Le shell est invoqué une fois qu'un utilisateur s'est connecté avec succès au système, à l'aide de /bin/login, après avoir lu les informations d'identification stockées dans le fichier /etc/passwd.

Lorsque le shell est démarré en tant que shell de connexion interactif, il lit le /etc/profile et son équivalent spécifique à l'utilisateur ~/.bash_profile.

2. Shell interactif sans connexion

Le shell est démarré sur la ligne de commande à l'aide d'un programme shell par exemple $/bin/bash ou $/bin/zsh. Il peut également être démarré en exécutant la commande /bin/su.

De plus, un shell interactif sans connexion peut également être invoqué avec un programme de terminal tel que konsole, terminator ou xterm depuis un environnement graphique.

Lorsque le shell est démarré dans cet état, il copie l'environnement du shell parent et lit le fichier ~/.bashrc spécifique à l'utilisateur pour obtenir des instructions de configuration de démarrage supplémentaires.

su
ls -la

3. Shell non interactif

Le shell est invoqué lorsqu'un script shell est en cours d'exécution. Dans ce mode, il traite un script (ensemble de commandes/fonctions shell ou système génériques) et ne nécessite pas de saisie utilisateur entre les commandes, sauf indication contraire. Il fonctionne en utilisant l'environnement hérité du shell parent.

Comprendre les fichiers de démarrage du shell à l'échelle du système

Dans cette section, nous mettrons davantage en lumière les fichiers de démarrage du shell qui stockent les configurations de tous les utilisateurs du système, notamment :

Le fichier /etc/profile : il stocke les configurations d'environnement à l'échelle du système et les programmes de démarrage pour la configuration de la connexion. Toutes les configurations que vous souhaitez appliquer à tous les environnements des utilisateurs du système doivent être ajoutées dans ce fichier.

Par exemple, vous pouvez définir ici votre variable d'environnement globale PATH.

cat /etc/profile

Remarque : Dans certains systèmes comme RHEL/CentOS 7, vous recevrez des avertissements tels que « Il n'est pas recommandé de modifier ce fichier, sauf si vous Sais ce que tu fais. Il est préférable de créer un script shell .sh personnalisé dans /etc/profile.d/ pour apporter des modifications personnalisées à votre environnement, car cela évitera d'avoir besoin de fusionner futures mises à jour ».

Le répertoire /etc/profile.d/ – stocke les scripts shell utilisés pour apporter des modifications personnalisées à votre environnement :

cd /etc/profile.d/
ls  -l 

Le fichier /etc/bashrc ou /etc/bash.bashrc : contient des fonctions et des alias à l'échelle du système, y compris d'autres configurations qui s'appliquent à tous les utilisateurs du système.

Si votre système dispose de plusieurs types de shells, c'est une bonne idée de mettre les configurations spécifiques à bash dans ce fichier.

cat /etc/bashrc

Comprendre les fichiers de démarrage Shell spécifiques à l'utilisateur

Ensuite, nous expliquerons plus en détail les fichiers de points de démarrage du shell (bash) spécifiques à l'utilisateur, qui stockent les configurations pour un utilisateur particulier sur le système, ils se trouvent dans le répertoire personnel d'un utilisateur et comprennent :

ls -la

Le fichier ~/.bash_profile : il stocke les configurations de l'environnement et des programmes de démarrage spécifiques à l'utilisateur. Vous pouvez définir votre variable d'environnement PATH personnalisée ici, comme indiqué dans la capture d'écran ci-dessous :

cat ~/.bash_profile

Le fichier ~/.bashrc : ce fichier stocke les alias et les fonctions spécifiques à l'utilisateur.

cat ~/.bashrc

Le fichier ~/.bash_login : il contient des configurations spécifiques qui ne sont normalement exécutées que lorsque vous vous connectez au système. Lorsque le ~/.bash_profile est absent, ce fichier sera lu par bash.

Le fichier ~/.profile – ce fichier est lu en l'absence de ~/.bash_profile et ~/.bash_login ; il peut stocker les mêmes configurations, qui peuvent également être accessibles par d'autres shells du système. Comme nous avons principalement parlé de bash ici, notez que d'autres shells pourraient ne pas comprendre la syntaxe bash.

Ensuite, nous expliquerons également deux autres fichiers importants spécifiques à l'utilisateur qui ne sont pas nécessairement des fichiers d'initialisation bash :

Le fichier ~/.bash_history – bash conserve un historique des commandes qui ont été entrées par un utilisateur sur le système. Cette liste de commandes est conservée dans le répertoire personnel d'un utilisateur dans le fichier ~/.bash_history.

Pour afficher cette liste, tapez :

history 
or 
history | less

Le fichier ~/.bash_logout : il n'est pas utilisé pour le démarrage du shell, mais stocke les instructions spécifiques à l'utilisateur pour la procédure de déconnexion. Il est lu et exécuté lorsqu'un utilisateur quitte un shell de connexion interactif.

Un exemple pratique consisterait à effacer la fenêtre du terminal lors de la déconnexion. Ceci est important pour les connexions à distance, qui laisseront une fenêtre propre après leur fermeture :

cat bash_logout 

Pour plus d'informations, consultez le contenu de ces fichiers d'initialisation du shell sur diverses distributions Linux et lisez également la page de manuel bash :

C'est tout pour le moment! Dans cet article, nous avons expliqué les fichiers de démarrage/initialisation du shell sous Linux. Utilisez le formulaire de commentaires ci-dessous pour nous répondre.