¿Cuál es la diferencia entre set
, env
, declare
y export
al establecer una variable en un shell de Linux, tales como bash
?
linux
bash
shell
shell-script
usuario3872279
fuente
fuente
Respuestas:
Parece que establecer y declarar son ligeramente diferentes, ya que el conjunto es más poderoso.
Consulte "declarar" en https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins declare: "Declare variables y asígneles atributos. Si no se dan nombres, muestre los valores de las variables en lugar.
Establezca "set" en https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: "Este builtin es tan complicado que merece su propia sección. Set le permite cambiar los valores de las opciones de shell y establecer los parámetros posicionales, o para mostrar los nombres y valores de las variables de shell ".
ENV es una variable de entorno en Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env es un comando de Linux. Creo que esta es una buena referencia: /unix/103467/what-is-env-command-doing
Pensé que esta era una buena explicación de exportación: http://www.unix.com/302531838-post2.html
También: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * export (de Bourne): "Marque cada nombre que se pasará a los procesos secundarios en el entorno".
Préstamo de código de la URL anterior:
fuente
declare
yset
yenv
? exportar vs declarar?Primero, debes entender eso
environment variables
yshell variables
no son lo mismo.Entonces, debes saber que los shells tienen atributos que gobiernan cómo funciona. Estos atributos no son variables de entorno ni de shell.
Ahora, a responder tu pregunta.
env
: sin ninguna opción, muestra las variables de entorno actuales con sus valores; Sin embargo, se puede usar para establecer la variable de entorno para un solo comando con el-i
indicadorset
: sin opciones, el nombre y el valor de cada variable de shell se muestran * ~ al ejecutarseman set
en rhel; También se puede utilizar para establecer el atributo de shell . Este comando NO establece el entorno ni la variable de shell .declare
: sin ninguna opción, lo mismo queenv
; también se puede usar para establecer la variable de shellexport
: hace que las variables de shell sean variables de entornoEn breve:
set
no establece shell ni variables de entornoenv
puede establecer variables de entorno para un solo comandodeclare
establece variables de shellexport
hace variables de shell variables de entornoNOTA
declare -x VAR=VAL
crea la variable de shell y también la exporta, por lo que es variable de entorno.fuente