export VARIABLE_NAME='some value'
es la manera de establecer una variable de entorno en cualquier shell POSIX-compatible ( sh
, dash
, bash
, ksh
, etc .; también zsh). Si la variable ya tiene un valor, puede usarla export VARIABLE_NAME
para convertirla en una variable de entorno sin cambiar su valor.
Los shells Bourne anteriores a POSIX no admitían esto, por lo que verá scripts que se deben evitar export VARIABLE_NAME='some value'
y usar VARIABLE_NAME='some value'; export VARIABLE_NAME
. Pero los proyectiles Bourne pre-POSIX son extremadamente raros hoy en día.
setenv VARIABLE_NAME='some value'
es la sintaxis de csh para establecer una variable de entorno. setenv
no existe en sh, y csh es extremadamente raro en scripts y ha sido superado por bash para uso interactivo durante los últimos 20 años (y zsh por más tiempo), por lo que puede olvidarse de él a menos que lo encuentre.
El env
comando rara vez es útil, excepto en líneas shebang . Cuando se invoca sin argumentos, muestra el entorno, pero lo export
hace mejor (ordenado y a menudo citado para desambiguar nuevas líneas en valores de nuevas líneas que separan los valores). Cuando se invoca con argumentos, ejecuta un comando con variables de entorno adicionales, pero el mismo comando sin env
también funciona (se VAR=value mycommand
ejecuta mycommand
con VAR
set to value
, like like env VAR=value mycommand
). La razón env
es útil en la línea shebang es que realiza una PATH
búsqueda, y resulta que no hace nada más cuando se invoca con un nombre de comando. El env
comando puede ser útil para ejecutar un comando con solo unas pocas variables de entorno con-i
, o sin parámetros para mostrar el entorno, incluidas variables con nombres no válidos que el shell no importa.
Gilles 'SO- deja de ser malvado'
fuente
VAR=asdf
actualiza el entorno siVAR
ya estaba en el entorno. (Esto no era cierto en el shell Bourne original)Hay varias preguntas con respuestas que responden esto:
Tratando de entender .bashrc, env y export
Diferencia entre las variables de shell que se exportan y las que no están en bash
¿Cuál es la diferencia en el uso entre las variables de shell y las variables de entorno?
no se encuentra el comando bash setenv
¿Cuál es la diferencia entre "exportar" y "setenv"?
(etc.)
fuente