Guide complet de la commande env sous Linux

Collection de commandes Linux

env est un outil en ligne de commande très pratique dans les systèmes Linux/Unix, principalement utilisé pour afficher et modifier les variables d'environnement, et pour exécuter des programmes dans un environnement personnalisé.

Les variables d'environnement sont des valeurs dynamiques définies par le système d'exploitation ou les utilisateurs ; elles influencent le comportement des processus en cours d'exécution. La commande env nous offre un moyen pratique de consulter et de manipuler ces variables.

Analogie : Considérez les variables d'environnement comme un tableau d'affichage dans un bureau. Tous les membres du personnel (programmes) peuvent voir les informations (variables d'environnement) qui y sont affichées et adapter leur façon de travailler en fonction de ces informations.


Syntaxe de base de la commande env

Le format de syntaxe de base de la commande env est le suivant :

env [OPTION]... [NAME=VALUE]... [COMMAND [ARG]...]

Si vous l'exécutez directement sans aucun paramètreenv, il affichera toutes les variables d'environnement actuelles et leurs valeurs.


Options et paramètres courants

La commande env prend en charge les options courantes suivantes :

Option Description
-i, --ignore-environment Démarrer à partir d'un environnement vide, en ignorant les variables d'environnement héritées
-u, --unset=NAME Supprimer les variables spécifiées de l'environnement
-C, --chdir=DIR Changer vers le répertoire spécifié avant d'exécuter la commande
-S, --split-string=S Diviser les arguments en plusieurs arguments
--help Afficher les informations d'aide
--version Afficher les informations de version

Exemples d'utilisation de base

1. Afficher toutes les variables d'environnement

L'utilisation la plus simple consiste à saisir directement leenvcommande :

Exemple

env

Cela affichera toutes les variables d'environnement dans le shell actuel au formatVariable name=value, par exemple :

USER=john
HOME=/home/john
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2. Exécuter des commandes dans un environnement personnalisé

Vous pouvez définir temporairement des variables d'environnement pour exécuter un programme :

Exemple

env LANG=C ls

Dans cet exemple, nous définissons temporairementLANG=Cpuis exécutons lalscommande, ce qui affectera lalslangue de sortie de la commande.

3. Créez un environnement propre pour exécuter des programmes

Utilisez la-ioption pour créer un environnement propre (sans hériter des variables d'environnement existantes) :

Exemple

env -i PATH=/bin:/usr/bin ls

Ici, nous avons créé un environnement propre avec seulementPATHvariable pour exécuter lalscommande.


Utilisation avancée

1. Modifier temporairement des variables pour exécuter des scripts

Exemple

env EDITOR=nano crontab -e

Cette commande va temporairement définir laEDITORvariable d'environnement ànano, puis exécutercrontab -e, qui utilisera l'éditeur nano pour modifier crontab.

2. Supprimer des variables d'environnement spécifiques

Exemple

env -u HOME ls

Cette commande va, lors de l'exécution,lssupprimer laHOMEvariable d'environnement.

3. Utilisation avec shebang

env est souvent utilisé dans la ligne shebang des scripts pour les rendre plus portables :

Exemple

#!/usr/bin/env bash

Cette approche est plus flexible que de spécifier directement/bin/bashplus flexible, car il vaPATHchercher l'emplacement de bash dans la variable d'environnement.


Scénarios d'application pratiques

1. Déboguer les problèmes de variables d'environnement

Lorsqu'un programme se comporte anormalement, vous pouvez utiliser env pour vérifier son environnement d'exécution :

Exemple

env -i /chemin/vers/programme

Cela peut écarter les interférences des variables d'environnement et déterminer si le problème est causé par les variables d'environnement.

2. Exécuter en toute sécurité des scripts non fiables

Lorsque vous exécutez des scripts d'origine inconnue, vous pouvez créer un environnement restreint :

Exemple

env -i PATH=/bin:/usr/bin /chemin/vers/script.sh

3. Tester le comportement d'un programme sous différents environnements de locale

Exemple

env LANG=fr_FR.UTF-8 program
env LANG=zh_CN.UTF-8 program

Cela permet de tester le comportement du programme dans différents environnements de locale/langue.


Notes

  1. Écrasement des variables: Les variables définies via env écraseront les variables d'environnement existantes portant le même nom.
  2. Impact sur les processus enfants: Les variables d'environnement modifiées par env n'affectent que les processus enfants qu'il lance, pas le shell actuel.
  3. Sécurité: Les informations sensibles (telles que les mots de passe) ne doivent pas être transmises via des variables d'environnement.
  4. Ordre des variables: Les variables définies plus tard écraseront les variables du même nom définies plus tôt.

Collection de commandes Linux

Autres extensions