Es importante distinguir entre un login shell y un nologin Shell pues los archivos que se usan son diferentes. El primero es cuando se arranca un Shell producto de haber entrado al sistema (“logueo”, se necesita ingresar usuario y contraseña) y el segundo es cuando se arranca un subshell o se ejecuta algún X-Terminal (terminal en el entorno gráfico).
Los archivos de inicialización de una sesión de login Shell, por el orden en que son leídos son:
- etc/profile: Se configuran muchas variables generales del sistema, también llamadas variables de entorno, algunas de ellas son: PATH, USER, MAIL, HOSTNAME, PS1 (promt) y otros valores como la mascara de permisos para la creación de archivos, umask. Este archivo se lee para todos los usuarios y solo el usuario root puede modificarlo.
- ~/.bash_profile: Como puede ser modificado por el usuario se usa para personalizar las opciones que se definen en /etc/profile, incluir el código del archivo ~/.bashrc, para nologin shells, o ejecutar comandos inmediatamente después de entrar de entrar al sistema (“loguearse”). Si ~/.bash_profile no existe, o el usuario no tiene permisos para leerlo, entonces buscara a ~/.bash_login, y de no ser este accesible se buscara a ~/.profile. Estos dos archivos son para mantener la compatibilidad con otros shells que no sean el bash.
- ~/.bash_logout: Es leído por el bash cuando se sale del sistema (logout). Se usa generalmente para borrar archivos temporales y limpiar la pantalla con el comando clear.
- /etc/bash.bashrc: Muy parecido al /etc/profile, se incluyen variables generales del sistema, pero que se lee cada vez que arrancamos una shell en el entorno gráfico (x-terminal) o cualquier instancia de shell nologin (subshell), también es leído cuando se ejecuta bash a través de un demonio de consola remota por ejemplo rshd. Este archivo se lee para todos los usuarios y solo el usuario root puede modificarlo.
- /etc/bashrc: Muy parecido a /etc/bash.bashrc pero este es leído únicamente por bash, excluyendo otras shells, por lo que si usamos varios tipos de shells, podríamos dedicar este fichero para configurar el bash. Este archivo se lee para todos los usuarios y solo el usuario root puede modificarlo.
- ~/.bashrc: Como puede ser modificado por el usuario se usa para personalizar las opciones que se definen en /etc/bash.bashrc. Se pueden reconfigurar varias opciones y variables de entorno como el PATH y el PS1 (promt). Aquí es donde habitualmente se establecen los alias. Es muy común que este archivo sea invocado desde ~/.bash_profile o sus sustitutos por lo que también afectará a los login shells. Este es el archivo de preferencia para personalizar las configuraciones.
~/.bash_aliases es el menos conocido y realmente pocos lo utilizan porque su función, que es el de establecer los alias, ya la cumple ~/.bashrc, aunque si deseamos ganar en organización podríamos utilizarlo, para ello debemos descomentar las líneas en ~/.bashrc, donde se invoca a este archivo que quedarían de esta manera:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
~/.bash_history contiene un listado de los últimos comandos, con sus argumentos, ejecutados en el Shell por nuestro usuario. El número predeterminado de líneas que se guardan es 500, pero este número puede ser cambiado a través de la variable de entorno HISTSIZE. La modificación se puede hacer desde la línea de comandos directamente. Por ejemplo si quisiéramos terner los últimos 1000 seria:
$export HISTSIZE=1000
o podemos cambiarla en el archivo ~/.bashrc, y de no estar declarada adicionarlo
$ echo "export HISTSIZE=1000" >> ~/.bashrc
Otra manera de acotar la información en este archivo es limitando su tamaño en bytes por medio de la variable de entorno HISTFILESIZE. Si queremos que no supere 1kB ejecutaremos:
$ echo "export HISTFILESIZE=1024" >> ~/.bashrc
Si somos un poco paranoicos podemos no desear que se cree este archivo, para eso utilizaremos la variable de entorno HISTFILE asignándole el dispositivo nulo, es decir:
$echo "export HISTFILE=/dev/null" >> ~/.bashrc
Muchas veces repetimos un comando muchas veces, para evitar que se guarden líneas repetidas, exportamos la variable HISTCONTROL:
$echo "export HISTCONTROL=ignoredups" >> ~/.bashrc
Por ultimo les hablare sobre /etc/bash_completion. Este arhivo permite el autocompletado usando la tecla tab o tabulador, como quiera que le llameis en todo el territorio insular, ahorrando mucho trabajo tecleando y te evita tener que memorizar el nombre exacto de comandos, rutas (path) y paquetes del sistema.
/etc/bash_completion es un script que se encarga de buscar todas las posibilidades cuando pulsamos la tecla tab, de modo que escribiendo una o unas pocas letras de una palabra, pulsando una vez el tab, si solo hay una posibilidad nos completará automáticamente el comando o palabra que estuviéramos escribiendo, pero si hay dos o más posibilidades, una doble pulsación nos mostrará todas las posibles opciones que hay con esas letras que ya tenemos escritas. Realmente es un regalo de los dioses a los pobres y mortales usuarios.
Los tipos de completamiento que hace son: de ruta o camino (path), nombrede archivos, de usuarios, y ordenadores.
- Completamiento de ruta o camino (path): este completamiento ocurre cuando el primer elemento de la línea de comandos permite completar con archivos ejecutables.
- Completamiento de nombre de archivos: permite completar los nombres de archivos o carpetas.
- Completamiento de nombres de usuarios: permite completar las carpetas de los usuarios a través del prefijo ~, es decir, solo basta escribir el símbolo ~ y se entenderá que es la carpeta del usuario actual. Si se escribe ~pancho se estara haciendo referencia a la carpeta del usuario pancho.
- Completamiento de nombre de ordenadores o IP (host): permite completar los nombres de los host utilizando el prefijo @.
- Completamiento de nombres de variables: permite completar los nombres de variables de entorno utilizando el prefijo $.
salu2
133(|<70|2