Guide complet de la commande env sous 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
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
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
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
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
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
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
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
3. Tester le comportement d'un programme sous différents environnements de locale
Exemple
env LANG=zh_CN.UTF-8 program
Cela permet de tester le comportement du programme dans différents environnements de locale/langue.
Notes
- Écrasement des variables: Les variables définies via env écraseront les variables d'environnement existantes portant le même nom.
- 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.
- Sécurité: Les informations sensibles (telles que les mots de passe) ne doivent pas être transmises via des variables d'environnement.
- Ordre des variables: Les variables définies plus tard écraseront les variables du même nom définies plus tôt.