He añadido este "exportar HISTCONTROL=ignoredups" línea en ~/.bashrc
archivo para evitar entradas duplicadas en el historial de Bash en mi escritorio Linux. ¿Te diste cuenta de que puse el prefijo HISTCONTROL
variable con "export"
? ¿Sabes qué es "export"
? opción para? Si se pregunta cuál es la diferencia entre definir variables bash con y sin opción de exportación, ¡sigue leyendo!
Diferencia entre la definición de variables Bash con y sin exportación
Definimos una variable con export
para que esté disponible para todos los subprocesos (o procesos secundarios). Significado:si define una variable con export
como abajo,
export variable_name=value
La variable está disponible para cualquier subproceso se ejecuta desde ese proceso de shell.
Si define una variable sin export
como abajo,
variable_name=value
La variable está limitada al shell y no está disponible para ningún otro subproceso. Puede usarlo para variables temporales y/o de bucle.
Permíteme mostrarte un ejemplo, para que puedas entenderlo mejor.
Permítanme definir una variable llamada "ostechnix"
sin "export"
como a continuación:
$ ostechnix="Welcome to ostechnix.com blog!"
Ahora muestra el valor usando el comando "echo":
$ echo $ostechnix
Mostrará el valor de la variable ostechnix:
Welcome to ostechnix.com blog!
Ahora, inicie una nueva sesión de shell Bash ejecutando el siguiente comando:
$ bash
Luego, intente mostrar el valor de la variable ostechnix usando echo
comando:
$ echo $ostechnix
¿Ver? ¡No devuelve nada! Solo ve una salida en blanco. Por lo tanto, se demuestra que cuando definimos una variable sin export
, no estará disponible para los procesos secundarios.
Definamos nuevamente la misma variable con export
opción:
$ export ostechnix="Welcome to ostechnix.com blog!"
Mostrar el valor de la variable:
$ echo $ostechnix
Salida de muestra:
Welcome to ostechnix.com blog!
Iniciar una nueva sesión de shell:
$ bash
Vuelva a intentar mostrar el valor de la variable:
$ echo $ostechnix
Ahora devolverá el valor.
Por lo tanto, la exportación hace que la variable esté disponible para cualquier otro proceso secundario en ese entorno de shell.