Amarengo

Articles and news

cómo ver, editar, desajustar y eliminar una variable de entorno en linux

En sistemas operativos Linux y/o Unix, una variable de entorno o de sistema es un par nombre-valor que está disponible en todo el sistema y se utiliza para compartir información entre aplicaciones. Estos objetos (pre) con nombre se usan generalmente como ajustes de configuración que una aplicación puede buscar siempre que conozca el nombre de la variable u objeto.

Además de las variables de todo el sistema, una variable también se puede establecer en otros ámbitos, como variables específicas de usuario y de sesión. También puede configurarse y desactivarse desde una sola instancia del shell o de la sesión.

Además, trataremos principalmente con el shell de comandos bash en este post. Pero también funcionará en otros shells, probablemente con ligeros cambios en la sintaxis. El concepto básico de variables de entorno sigue siendo el mismo en todas las capas.

Mostrar una sola variable de entorno

Si conoce el nombre de la variable que desea buscar, puede usar el comando echo para mostrar el valor de la variable. Esto también funciona con scripts de shell.

bash$ echo $<variable name>

El $ se usa para denotar que la cadena que le sigue es una variable. Por lo general, las variables de entorno son todas en mayúsculas, pero no es necesario. Es sobre todo un caso de convención. Si el nombre de la variable es HOME, entonces el comando es

bash$ echo $HOME

Otro comando que se puede usar para mostrar un valor de variable es printenv. Esto funciona de la misma manera que el comando echo funciona en el ejemplo anterior.

bash$ printenv HOME

Tenga en cuenta que este comando no requiere el carácter especial$, ya que se supone que los argumentos de este comando son nombres de variables de entorno.

Mostrar todas las variables

En caso de que desee ver todas las variables del sistema configuradas en el entorno, puede usar cualquiera de los tres comandos : set, env o printenv. Cada uno de estos comandos, cuando se ejecutan sin argumentos de línea de comandos, mostrará todas las variables y sus valores que están disponibles actualmente en el entorno de shell.

bash$ set
bash$ env
bash$ printenv

La salida de los comandos anteriores puede ser bastante larga. Como ya sabe o descubrirá, hay una larga lista de propiedades de entorno establecidas por defecto. Esto también significa que puede ser bastante difícil encontrar una clave o valor de propiedad específico.

Si solo conoce parte del nombre de una variable o desea mostrar solo un subconjunto de las variables, puede canalizar la salida del comando anterior a grep. El siguiente ejemplo mostrará todas las variables que tienen la palabra proxy en el nombre o el valor.

bash$ env | grep -i proxy

Esta sección le mostró cómo puede ver las variables de entorno en el sistema. A menudo, también querrá establecer o modificar los valores. También puede hacer esto directamente desde la consola de comandos.

Establecer una variable de entorno

Establecer una variable de entorno es lo mismo que crear un nuevo valor o editar un valor existente. Cuando se establece una variable, la variable se crea y se anexa al entorno si aún no existe. Si ya existe en el entorno, el valor se modifica para reflejar los cambios.

Puede usar el comando set o env para establecer la variable utilizando la siguiente sintaxis. Ambos comandos deberían funcionar en la mayoría de los shells de comandos.Estos comandos configurarán la variable de entorno para la shell o instancia actual.

Si encuentra que uno de los comandos no es compatible con su shell en particular, simplemente use el otro. Además, la sintaxis podría ser diferente. Algunos shells tampoco requieren el símbolo igual a (=) en el comando.

bash$ set NAME=Value
O
bash$ env NAME=Value

Debido a cómo las variables son heredadas por los procesos en Linux y dependiendo de cómo y dónde se ejecutan, las variables pueden haberse establecido solo en la sesión actual o en la instancia actual del shell. Para configurarlo globalmente, puede usar el comando export o el comando setenv dependiendo del shell de comandos que se utilice.

En shells de bourne o bash, use el comando exportar como en el ejemplo a continuación.

bash$ export NAME=Value

mientras que en csh y relacionados con conchas, utilice el comando setenv

csh$ setenv NAME Value

(Nota: No hay un operador igual (=) en setenv).

No olvide incluir el valor anterior de una variable, si solo desea agregarlo al valor existente. De lo contrario, el valor anterior de la variable se sobrescribe. Esto es relevante en variables de ruta como PATH o LIBRARY_PATH. Para añadir un directorio, llamado /home/john/temp a la ruta existente, use algo como lo siguiente

bash$ export PATH=$PATH:/home/john/temp

Una vez más, exportar el valor solo lo establecerá para la sesión actual. Esto significa que al cerrar sesión o reiniciar el sistema, los cambios se perderán. Si desea mantener los cambios de valor a lo largo de los reinicios, deberá modificar los archivos de configuración en los que está configurado.

Valores de entorno global

Los valores de entorno global se establecen en varios lugares, a menudo variando entre distribuciones. Si es una variable específica del usuario, entonces es muy posible que se establezca en el archivo de configuración específico del shell en el directorio personal del usuario.

Si está utilizando el shell bash, consulte el .bashrc or .archivos bash_profile en el directorio personal. Algunos ambientes también tienen un .archivo de perfil en el directorio personal. Otro archivo que se usa por defecto para todos los usuarios y shells es el archivo/etc / profile.

En un entorno Gentoo, puede establecer valores de entorno globales en un archivo dentro de /etc / env.d/ carpeta. Esto le permite tener archivos separados para diferentes conjuntos de variables de entorno globales. También hay varios archivos de perfil diferentes en la carpeta / etc/, como perfil, perfil.csh, perfil.env etc etc. Además, hay archivos de configuración dentro del perfil/etc/.d/ carpeta.

Si utiliza Ubuntu o una distribución basada en Ubuntu, las variables globales se establecen en el archivo/etc / environment. También puede mirar dentro del perfil/etc/.d / folder, que puede ejecutar varios archivos, incluido el archivo. sh. El mismo formato se utiliza en otras distribuciones, así como en CentOS. En los sistemas basados en Suse, busque también un archivo llamado /etc/profile.local.

Archivos de configuración para variables env globales en linux

Sí, hay muchos archivos de configuración diferentes donde se pueden establecer las variables globales. Vea mi conjunto de archivos de configuración en la imagen anterior. Con gran potencia vienen muchos archivos de configuración. Por lo general, en la práctica, no es tan malo. Todo el mundo tiene preferencias individuales y las variables irán a archivos y carpetas similares y una vez que sepa y entienda cómo funciona, estará listo.

Una vez que haya encontrado el lugar o archivo donde la variable de entorno está definida o establecida actualmente, puede editar el archivo para cambiar el valor y guardarlo. Siga los formatos existentes en los archivos al modificar los valores. Por lo general, son la misma sintaxis que usa al configurar las variables desde la línea de comandos. Los cambios se mantendrán en todos los cierres de sesión y reinicios.

Si esta es una variable nueva que desea agregar al sistema, deberá encontrar el lugar más apropiado de todas las opciones mencionadas anteriormente. Si esta nueva variable es local y solo se aplica a algunos usuarios, configúrela en el directorio personal. Si debe ser accesible solo para algunos usuarios en el shell de comandos, configúrelo en los archivos de configuración del shell apropiados. Si es realmente global, configúrelo en los archivos de configuración globales de las carpetas / etc/.

Eliminar (o Desactivar) una Variable de Entorno

a Veces desea eliminar por completo la variable del entorno. Para quitar o quitar una variable del entorno, puede volver a usar el comando env con la opción de línea de comandos –unset (-u).

bash$ env -u NAME

Otro comando que hace lo mismo es el comando unset. El unset es un comando posix y debería estar disponible en todos los shells, pero nunca se sabe.

bash$ unset NAME

Después de desajustar la variable, asegúrese de comprobarla utilizando los comandos echo o set para asegurarse de que efectivamente se ha eliminado.

Al igual que con los comandos set anteriores, si desea mantener el cambio en el valor, deberá modificar y guardar el archivo de configuración donde se estableció. A medida que elimine o desactive los valores en este caso, simplemente elimine la línea donde se establece el valor.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.