¿Cuáles son las diferencias entre las variables de entorno y shell? ¿Dónde están almacenadas estas variables?Diferencia entre variables de entorno y shell
Respuesta
Citando this source,
variables estándar UNIX se dividen en variables de dos categorías, variables de entorno y Shell. En términos generales, las variables de shell se aplican solo a la instancia actual del shell y son utilizadas para establecer las condiciones de funcionamiento a corto plazo ; las variables de entorno tienen un significado de mayor alcance, y las establecidas al iniciar sesión son válidas para la duración de la sesión . Por convenio , las variables de entorno tienen MAYÚSCULAS y las variables de shell tienen minúsculas.
Para enumerar todas las variables de entorno, utilice printenv
y para enumerar todas las variables de shell, use set
.
Se habrá dado cuenta de que las variables de entorno almacenan valor más permanente, por ejemplo:
HOME=/home/adam
Qué cambia muy pocas veces, mientras que las variables de shell almacena los valores locales, temporales, de caparazón específico, por ejemplo:
PWD=/tmp
que cambia cada vez que cambia su directorio actual.
Para la mayoría de las tareas prácticas, establezca valores de entorno agregando export VARIABLE_NAME=VALUE
a su archivo ~/.bashrc.
Una variable de shell es solo un caso especial de una variable de entorno. variables de shell se heredan del medio ambiente y posiblemente copian en el entorno de los niños de la cáscara en función de la sintaxis utilizada: http://www.pixelbeat.org/docs/env.html
Esto no es correcto. Básicamente tienes los términos invertidos. Obviamente, hay mucha confusión sobre este tema, incluso por usuarios veteranos y un desarrollador coreutils. : -/ – deltaray
No creo que haya revertido los términos. Estaba dando a entender que la lista de entornos es más fundamental y está presente para todos los procesos, incluidos los shells. las variables de shell son un caso especial que se inicializan _desde_ la lista de entornos – pixelbeat
Su diferencia es similar a la diferencia entre los campos privados y campos protegidos de una clase Java.
Los campos privados de una clase Java solo son accesibles desde esa clase Java. Los campos protegidos de una clase Java son accesibles tanto desde la clase Java como desde sus subclases.
Las variables de shell de un shell solo son accesibles desde ese proceso de shell. Se puede acceder a las variables de entorno exportadas desde ese shell tanto desde ese proceso de shell como desde los subprocesos creados desde ese shell.
Para Bash shell:
variables de shell difieren de las variables de entorno de distintas maneras:
♦ Una variable shell es específico para el mismo cuerpo de recubrimiento y no se hereda por procesos secundarios.Por ejemplo, digamos que se está ejecutando otra aplicación de la cáscara, que la aplicación no heredará la variable de shell:
$ SHELL_VAR=xyz
$ firefox
SHELL_VAR
no estarán disponibles en el entorno del proceso hijo (Firefox).
♦ Por el contrario, las variables de entorno del proceso padre (la cáscara aquí) son heredados por todos los procesos hijos: variables de
$ export SHELL_VAR=xyz
$ firefox
♦ Tanto la cáscara y el medio ambiente local de la cáscara/proceso que los definió:
Las variables de entorno pueden ser persistentes, mientras que para las variables de shell una vez que sale de la sesión, se han ido todas.
Nota: los ejemplos anteriores solo alteran el shell en el que está trabajando, en otras palabras, si cierra sesión o inicia un nuevo shell/terminal no verá las variables que definió, esto es por el principio de localidad de proceso.
Cómo hacer que las variables de shell presistent:
Una forma de hacer esto es mediante la modificación del archivo ~/.profile:
export SHELL_VAR=xyz
Esta configuración es específica del usuario y no en todo el sistema, para las variables de entorno de todo el sistema, puede agregar la línea anterior a un archivo .sh .sh en /etc/profile.d
le recomiendo leer esta página: EnvironmentVariables
- 1. Diferencia entre variables de finalización y semáforos
- 2. ¿Cuál es la diferencia entre un shell gráfico y un entorno de escritorio
- 3. ¿Cuál es la diferencia entre% TMP% y% TEMP% en las variables de entorno de Vista?
- 4. Diferencia entre o y || al establecer variables
- 5. Ruby, Unicorn y variables de entorno
- 6. Exportación de variables de entorno al shell Makefile
- 7. ¿Cuál es la diferencia entre las variables de entorno `USER` y` USERNAME`?
- 8. Variables de entorno globales en un script de shell
- 9. PHP y variables de entorno Apache
- 10. ¿Diferencia entre JAVA_OPTS y JAVA_TOOL_OPTIONS?
- 11. ¿Cuál es la diferencia entre $ @ y $ * en scripts de shell?
- 12. Ajuste/lectura de variables de entorno
- 13. guardar y restaurar variables de shell
- 14. Exportación de variables entre el script de shell
- 15. Diferencia entre System.load() y System.loadLibrary en Java
- 16. Ruby: Diferencia entre Instancia y variables locales en Ruby
- 17. Diferencia entre variables estáticas públicas y privadas estáticas
- 18. diferencia entre variables no configuradas y vacías en bash
- 19. La diferencia entre $ * y $ @
- 20. ¿Diferencia entre variables de clase y variables de instancia de clase?
- 21. Diferencia entre array.count y array.size
- 22. Cómo establecer variables de entorno en Python
- 23. Diferencia entre REMOTE_HOST y REMOTE_ADDR
- 24. Comprobación de variables de entorno
- 25. Variables de entorno de Javascript
- 26. Variables de entorno en enlaces simbólicos
- 27. MSBuild requiere variables de entorno
- 28. Diferencia entre DataSource y DataSet
- 29. ¿Cómo puedo generar variables de entorno para un shell de comandos en un script de Ruby?
- 30. Manera correcta de pasar variables de entorno al comando de shell exec
variable de entorno están definidas por el usuario? y las variables de la carcasa son definición del sistema? También mencionó los comandos, no la ubicación, ¿dónde está ubicada la variable? – sunil
¿Qué quiere decir con 'Donde se encuentran las variables'? ¿Dónde se establece su valor o dónde se almacenan (técnicamente) en la memoria de la computadora? –
cualquier archivo está allí donde están almacenados && ¿están definidos por el usuario o predefinidos – sunil