Guía completa del comando env de Linux

Manual completo de comandos de Linux

env es una herramienta de línea de comandos muy útil en sistemas Linux/Unix, principalmente utilizada para mostrar y modificar variables de entorno, así como para ejecutar programas en un entorno personalizado.

Las variables de entorno son valores dinámicos establecidos por el sistema operativo o el usuario, que afectan el comportamiento de los procesos en ejecución. El comando env nos proporciona una forma conveniente de ver y manipular estas variables.

Analogía: podemos imaginar las variables de entorno como un tablón de anuncios en la oficina; todo el personal (programas) puede ver la información (variables de entorno) en él y ajustar su forma de trabajar según esa información.


Sintaxis básica del comando env

El formato de sintaxis básica del comando env es el siguiente:

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

Si se ejecuta directamente sin ningún parámetroenv, mostrará todas las variables de entorno actuales y sus valores.


Opciones y parámetros comunes

El comando env admite las siguientes opciones comunes:

Opción Descripción
-i, --ignore-environment Comenzar desde un entorno vacío, ignorando las variables de entorno heredadas
-u, --unset=NAME Eliminar la variable especificada del entorno
-C, --chdir=DIR Cambiar al directorio especificado antes de ejecutar el comando
-S, --split-string=S Dividir los parámetros en múltiples parámetros
--help Mostrar información de ayuda
--version Mostrar información de versión

Ejemplos de uso básico

1. Ver todas las variables de entorno

El uso más sencillo es escribir directamenteenvel comando:

Ejemplo

env

Esto mostrará todas las variables de entorno del shell actual, con el formatonombre de variable=valor, por ejemplo:

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

2. Ejecutar comandos en un entorno personalizado

Se pueden establecer variables de entorno temporalmente para ejecutar programas:

Ejemplo

env LANG=C ls

En este ejemplo, establecemos temporalmenteLANG=Cy luego ejecutamos el comandols, lo cual afectarálsel idioma de salida del comando.

3. Crear un entorno limpio para ejecutar programas

Usando la-iopción se puede crear un entorno limpio (sin heredar ninguna variable de entorno existente):

Ejemplo

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

Aquí hemos creado un entorno limpio que solo tiene laPATHvariable para ejecutar ellscomando.


Uso avanzado

1. Modificar temporalmente variables para ejecutar scripts

Ejemplo

env EDITOR=nano crontab -e

Este comando establecerá temporalmente laEDITORvariable de entorno ennano, y luego ejecutarácrontab -e, de esta manera se usará el editor nano para editar crontab.

2. Eliminar variables de entorno específicas

Ejemplo

env -u HOME ls

Este comando, al ejecutarls, eliminará laHOMEvariable de entorno.

3. Uso combinado con shebang

env se usa frecuentemente en la línea shebang de los scripts para hacerlos más portables:

Ejemplo

#!/usr/bin/env bash

Esta forma de escribir es más flexible que especificar directamente/bin/bash, porque busca la ubicación de bash en laPATHvariable de entorno.


Escenarios de aplicación práctica

1. Depurar problemas de variables de entorno

Cuando el comportamiento del programa es anormal, se puede usar env para verificar el entorno en el que se ejecuta:

Ejemplo

env -i /path/to/program

Esto permite descartar la interferencia de las variables de entorno y determinar si el problema es causado por ellas.

2. Ejecutar scripts no confiables de forma segura

Al ejecutar scripts de origen desconocido, se puede crear un entorno restringido:

Ejemplo

env -i PATH=/bin:/usr/bin /path/to/script.sh

3. Probar el comportamiento del programa en diferentes configuraciones regionales

Ejemplo

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

Esto permite probar el comportamiento del programa en diferentes entornos de idioma.


Notas

  1. Sobrescritura de variables: las variables establecidas mediante env sobrescribirán las variables de entorno existentes con el mismo nombre
  2. Impacto en subprocesos: las variables de entorno modificadas por env solo afectan a los subprocesos que inicia, no afectan al shell actual
  3. Seguridad: la información sensible (como contraseñas) no debe transmitirse a través de variables de entorno
  4. Orden de variables: las variables establecidas posteriormente sobrescribirán las variables del mismo nombre establecidas anteriormente

Manual completo de comandos de Linux

Otras extensiones