7.5.- Poner a punto los entornos del sistema y el usuario

Los entornos de usuario de tipo texto se controlan a través de los ficheros de configuración de la consola. En bash, estos ficheros son:

  • /etc/profile
    etc_profile
  • /etc/bash.bashrc
    etc_bash
  • ~/.profile
    etc_profile2
  • ~/.bashrc
    etc_bashrc
  • ~/.bash profile
  • ~/.profile

Los ficheros de /etc son ficheros de configuración global, que afectan a todos los usuarios; los directorios home pertenece a los usuarios individuales, y estos los pueden personalizar. Estos ficheros controlan las distintas opciones de bash, incluyendo las variables de entorno, que son variables con nombre que contienen datos que emplean varios programas. Por ejemplo, podríamos definir la variable de entorno $EDITOR con el nombre de nuestro editor favorito. Algunos programas (no todos) que inician los editores tienen en cuenta esta variable de entorno e inician el editor especificado.

Como administrador del sistema, puede cambiar los ficheros de configuración de bash para todo el sistema para añadir, eliminar o cambiar las variables de entorno que reciben todos los usuarios. Pero generalmente, esto debería hacerlo cuando la documentación de un programa especifico  indicara que éste emplea unas variables de entorno concretas.

Podemos también ver todas sus variables de entorno con el comando env (como la lista es muy larga la canalizamos a través de less, como en env | less).

env_less

Y nos muestra el resultado de sus variables de entorno:

env_less_resultado

 Además de definir variables de entorno y modificar en definitiva el entorno de acceso de modo texto de los usuarios ajustando sus ficheros de configuración de bash, puede ajustar el conjunto de ficheros creado por defecto con useradd. Como vimos anteriormente, useradd copia los ficheros del “directorio esqueleto” (que, por defecto, es /etc/skel) en un directorio home recién creado. Generalmente, /etc/skel contiene un puñado de ficheros de configuración del usuario, un árbol de directorios inicial, un fichero README (Léeme) para los nuevos usuarios y cualquier otra cosa que desee.

Estos ficheros son copiados en los directorios home de los usuarios y pasan a ser los propietarios de esos archivos por lo que pueden leerlos, cambiarlos e incluso borrar sus copias de ficheros. Por lo tanto no debería poner opciones en estos ficheros que sean sensibles desde el punto de vista de la seguridad o que los usuarios no deban poder cambiar (realmente, los usuarios también pueden invalidar fácilmente las entradas de los ficheros de configuración global de bash). A tener en cuenta que los cambios que realice en los ficheros globales no se trasladarán automáticamente a las copias de estos ficheros globales (como /etc/profile) a /etc/skel para cualquier cambio que desee implementar en los valores por defecto de todo el sistema, en particular si tiene pensado modificarlos alguna vez.

tux_maestro_derHay varios programas que definen ellos mismos las variables de entorno; bash mantiene algunas automáticamente. Por ejemplo, bash mantiene la variable de entorno PWD, por lo que no debería intentar definirla en un script de configuración. Además, debe tener en cuenta que la modificación de los ficheros de configuración de bash sólo afecta a bash. Si la consola por defecto de un  usuario es otra o si un usuario no utiliza una consola en modo texto (por ejemplo, si el usuario accede en X e inicia programas desde un menú GUI), definir las variables de entorno en los ficheros de configuración de bash no será de ninguna ayuda.