Unix / Linux - Environnement

Dans ce chapitre, nous discuterons en détail de l'environnement Unix. Un concept Unix important est leenvironment, qui est défini par les variables d'environnement. Certains sont définis par le système, d'autres par vous, d'autres encore par le shell, ou tout autre programme qui charge un autre programme.

Une variable est une chaîne de caractères à laquelle nous attribuons une valeur. La valeur attribuée peut être un nombre, du texte, un nom de fichier, un périphérique ou tout autre type de données.

Par exemple, nous définissons d'abord une variable TEST puis nous accédons à sa valeur à l'aide du echo commande -

$TEST="Unix Programming"
$echo $TEST

Il produit le résultat suivant.

Unix Programming

Notez que les variables d'environnement sont définies sans utiliser le $signe mais en y accédant, nous utilisons le signe $ comme préfixe. Ces variables conservent leurs valeurs jusqu'à ce que nous sortions du shell.

Lorsque vous vous connectez au système, le shell subit une phase appelée initializationpour mettre en place l'environnement. Il s'agit généralement d'un processus en deux étapes qui implique que le shell lise les fichiers suivants -

  • /etc/profile
  • profile

Le processus est le suivant -

  • Le shell vérifie si le fichier /etc/profile existe.

  • S'il existe, le shell le lit. Sinon, ce fichier est ignoré. Aucun message d'erreur ne s'affiche.

  • Le shell vérifie si le fichier .profileexiste dans votre répertoire personnel. Votre répertoire personnel est le répertoire dans lequel vous démarrez après vous être connecté.

  • S'il existe, le shell le lit; sinon, le shell l'ignore. Aucun message d'erreur ne s'affiche.

Dès que ces deux fichiers ont été lus, le shell affiche une invite -

$

C'est l'invite où vous pouvez entrer des commandes afin de les exécuter.

Note - Le processus d'initialisation du shell détaillé ici s'applique à tous Bourne shells de type, mais certains fichiers supplémentaires sont utilisés par bash et ksh.

Le fichier .profile

Le fichier /etc/profile est géré par l'administrateur système de votre machine Unix et contient les informations d'initialisation du shell requises par tous les utilisateurs d'un système.

Le fichier .profileest sous votre contrôle. Vous pouvez ajouter autant d'informations de personnalisation du shell que vous le souhaitez à ce fichier. L'ensemble minimal d'informations que vous devez configurer comprend:

  • Le type de terminal que vous utilisez.
  • Une liste de répertoires dans lesquels localiser les commandes.
  • Une liste de variables affectant l'aspect et la convivialité de votre terminal.

Vous pouvez vérifier votre .profiledisponible dans votre répertoire personnel. Ouvrez-le à l'aide de l'éditeur vi et vérifiez toutes les variables définies pour votre environnement.

Définition du type de terminal

Habituellement, le type de terminal que vous utilisez est automatiquement configuré soit par le login ou gettyprogrammes. Parfois, le processus de configuration automatique ne devine pas correctement votre terminal.

Si votre terminal n'est pas configuré correctement, la sortie des commandes peut paraître étrange ou vous ne pourrez peut-être pas interagir correctement avec le shell.

Pour s'assurer que ce n'est pas le cas, la plupart des utilisateurs définissent leur terminal sur le plus petit dénominateur commun de la manière suivante:

$TERM=vt100
$

Définition du CHEMIN

Lorsque vous tapez une commande sur l'invite de commande, le shell doit localiser la commande avant de pouvoir être exécutée.

La variable PATH spécifie les emplacements dans lesquels le shell doit rechercher les commandes. Habituellement, la variable Path est définie comme suit -

$PATH=/bin:/usr/bin
$

Ici, chacune des entrées individuelles séparées par le caractère deux-points (:)sont des répertoires. Si vous demandez au shell d'exécuter une commande et qu'il ne peut la trouver dans aucun des répertoires donnés dans la variable PATH, un message similaire au suivant apparaît -

$hello
hello: not found
$

Il existe des variables comme PS1 et PS2 qui sont discutées dans la section suivante.

Variables PS1 et PS2

Les caractères que le shell affiche comme invite de commande sont stockés dans la variable PS1. Vous pouvez changer cette variable pour qu'elle soit tout ce que vous voulez. Dès que vous le modifiez, il sera utilisé par le shell à partir de ce moment.

Par exemple, si vous avez émis la commande -

$PS1='=>'
=>
=>
=>

Votre invite deviendra =>. Pour définir la valeur dePS1 pour qu'il affiche le répertoire de travail, émettez la commande -

=>PS1="[\[email protected]\h \w]\$"
[[email protected] /var/www/tutorialspoint/unix]$
[[email protected] /var/www/tutorialspoint/unix]$

Le résultat de cette commande est que l'invite affiche le nom d'utilisateur de l'utilisateur, le nom de la machine (nom d'hôte) et le répertoire de travail.

Il y en a pas mal escape sequencesqui peuvent être utilisés comme arguments de valeur pour PS1; essayez de vous limiter au plus critique afin que l'invite ne vous submerge pas d'informations.

Sr.No. Séquence d'échappement et description
1

\t

Heure actuelle, exprimée en HH: MM: SS

2

\d

Date actuelle, exprimée en semaine, mois, date

3

\n

Nouvelle ligne

4

\s

Environnement shell actuel

5

\W

Directeur de travail

6

\w

Chemin complet du répertoire de travail

sept

\u

Nom d'utilisateur de l'utilisateur actuel

8

\h

Nom d'hôte de la machine actuelle

9

\#

Numéro de commande de la commande en cours. Augmente quand une nouvelle commande est entrée

dix

\$

Si l'UID effectif est 0 (c'est-à-dire si vous êtes connecté en tant que root), terminez l'invite par le caractère #; sinon, utilisez le signe $

Vous pouvez effectuer la modification vous-même à chaque fois que vous vous connectez, ou vous pouvez faire effectuer la modification automatiquement dans PS1 en l'ajoutant à votre .profile fichier.

Lorsque vous émettez une commande incomplète, le shell affiche une invite secondaire et attend que vous terminiez la commande et appuyez sur Enter encore.

L'invite secondaire par défaut est > (le signe supérieur à), mais peut être modifié en redéfinissant le PS2 variable shell -

Voici l'exemple qui utilise l'invite secondaire par défaut -

$ echo "this is a
> test"
this is a
test
$

L'exemple donné ci-dessous redéfinit PS2 avec une invite personnalisée -

$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

Variables d'environnement

Voici la liste partielle des variables d'environnement importantes. Ces variables sont définies et accessibles comme indiqué ci-dessous -

Sr.No. Variable et description
1

DISPLAY

Contient l'identifiant de l'affichage qui X11 les programmes doivent utiliser par défaut.

2

HOME

Indique le répertoire personnel de l'utilisateur actuel: l'argument par défaut du cd built-in commander.

3

IFS

Indique le Internal Field Separator qui est utilisé par l'analyseur pour la division de mot après l'expansion.

4

LANG

LANG se développe vers les paramètres régionaux par défaut du système; LC_ALL peut être utilisé pour remplacer cela. Par exemple, si sa valeur estpt_BR, la langue est définie sur le portugais (brésilien) et la langue sur le Brésil.

5

LD_LIBRARY_PATH

Un système Unix avec un éditeur de liens dynamique, contient une liste de répertoires par couleur, dans lesquels l'éditeur de liens dynamique doit rechercher des objets partagés lors de la construction d'une image de processus après exec, avant de chercher dans d'autres répertoires.

6

PATH

Indique le chemin de recherche des commandes. C'est une liste de répertoires séparés par deux-points dans lesquels le shell recherche des commandes.

sept

PWD

Indique le répertoire de travail actuel défini par la commande cd.

8

RANDOM

Génère un entier aléatoire compris entre 0 et 32 ​​767 chaque fois qu'il est référencé.

9

SHLVL

Incrémente de un à chaque fois qu'une instance de bash est démarrée. Cette variable est utile pour déterminer si la commande de sortie intégrée met fin à la session en cours.

dix

TERM

Fait référence au type d'affichage.

11

TZ

Fait référence au fuseau horaire. Il peut prendre des valeurs telles que GMT, AST, etc.

12

UID

S'étend à l'ID utilisateur numérique de l'utilisateur actuel, initialisé au démarrage du shell.

Voici l'exemple d'exemple montrant quelques variables d'environnement -

$ echo $HOME
/root
]$ echo $DISPLAY

$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$