¿Cuál es la diferencia entre set, env, declarey exportal 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
declareysetyenv? exportar vs declarar?Primero, debes entender eso
environment variablesyshell variablesno 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-iindicadorset: sin opciones, el nombre y el valor de cada variable de shell se muestran * ~ al ejecutarseman seten 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:
setno establece shell ni variables de entornoenvpuede establecer variables de entorno para un solo comandodeclareestablece variables de shellexporthace variables de shell variables de entornoNOTA
declare -x VAR=VALcrea la variable de shell y también la exporta, por lo que es variable de entorno.fuente