envEs un comando de shell que informa sobre las variables de entorno o ejecuta un comando en un subproceso con variables de entorno modificadas. Este comando se proporciona en sistemas tipo Unix .
Por defecto, un subproceso hereda las variables de entorno del proceso padre. envAdmite agregar, modificar y eliminar las variables copiadas. envTambién se puede usar para iniciar el intérprete correcto . En este uso, el entorno normalmente no se modifica. El comando no modifica las variables de entorno en el proceso en el que se ejecuta. Los mecanismos para hacerlo incluyen el exportcomando y asignar un nombre a un valor como NAME=value.
La versión de GNU coreutils fue escrita por Richard Mlynarik, David MacKenzie y Assaf Gordon. [ 1 ] Apareció por primera vez en 4.4BSD y forma parte de POSIX.1 (solo con la opción -i ). [ 2 ] Esta versión se ha ampliado para manejar señales y el directorio actual. [ 1 ]
La versión de FreeBSD admite una ruta de búsqueda personalizada. Las extensiones que se encuentran en ambas versiones incluyen -u , para eliminar variables, y -S , para dividir argumentos (principalmente en shebang). [ 2 ]
Ejemplos
La siguiente línea de comandos imprime las variables de entorno actuales en la salida estándar :
$ entorno La siguiente línea de comandos crea un nuevo intérprete de comandos sin ninguna variable de entorno:
$ env -i /bin/sh La siguiente línea de comandos ejecuta la aplicación xcalc de tal manera que la variable DISPLAY tenga el valor "foo.bar:1.0" para que se muestre en la pantalla especificada:
$ env DISPLAY = foo.bar:1.0 xcalc Este uso de env suele ser innecesario, ya que la mayoría de los shells admiten la configuración de variables de entorno delante de un comando como este:
$ DISPLAY = foo.bar:1.0 xcalc La variable `env` también puede utilizarse en la línea `hashbang` de un script para permitir que el intérprete se busque a través de la variable `PATH`. Por ejemplo, aquí está el código de un script de Python :
#!/usr/bin/env python3 print ( "Hola, mundo!" )En este ejemplo, /usr/bin/enves la ruta completa del envcomando. El entorno no se modifica.
Tenga en cuenta que es posible especificar el intérprete sin usar env, proporcionando la ruta completa del pythonintérprete. Un problema con este enfoque es que en diferentes sistemas informáticos, la ruta exacta puede variar. Al usar envcomo en el ejemplo, el intérprete se busca y se localiza cuando se ejecuta el script (más precisamente, envrealiza una llamada al sistema a execvp, que se encarga de localizar el intérprete y ejecutarlo). Esto hace que el script sea más portable , pero también aumenta el riesgo de que se seleccione el intérprete incorrecto porque busca una coincidencia en cada directorio de la ruta de búsqueda del ejecutable. También sufre el mismo problema de que la ruta al envbinario también puede variar de una máquina a otra.
Véase también
Referencias
Enlaces externos
- : configurar el entorno para la invocación de comandos – Referencia de Shell y Utilidades, Especificación UNIX Única , Versión 5 de The Open Group
- – Manual de comandos generales de Inferno
- env — página del manual de GNU coreutils .
- – Manual de comandos generales de FreeBSD
- Ejecutar un programa en un entorno modificado – Manual de comandos generales de OpenBSD
- : configurar e imprimir el entorno – Manual de comandos generales de NetBSD
- – Manual de usuario de Linux – Comandos de usuario de Manned.org
- – Manual de referencia de comandos de usuario de Solaris 11.4
- Programas estándar de Unix
- Utilidades Unix SUS2008
- Comandos de Inferno (sistema operativo)
- Comandos de Qshell para IBM i
- Variables ambientales