¿Qué es un archivo .bashrc y qué hace?

21

Parece que no puedo encontrar ninguna información clara sobre qué es el .bashrcarchivo y qué hace exactamente.


Gracias por toda la ayuda hasta ahora. Parece que este script hace todo, desde colorear, completar, alias e historial de shell, etc. ¿Hay algo que no parezca útil?

Justin
fuente
44
.bashrces uno de los muchos archivos de configuración de bash conmf. Consulte la documentación oficial sobre Bash Startup Files .
muru

Respuestas:

21

El .bashrcarchivo es un script que se ejecuta cada vez que se inicia una nueva sesión de terminal en modo interactivo . Esto es lo que sucede cuando abre una nueva ventana de terminal presionando Ctrl+ Alt+ T, o simplemente abre una nueva pestaña de terminal.

Por el contrario, una sesión de terminal en modo de inicio de sesión le pedirá su nombre de usuario y contraseña y ejecutará el ~/.bash_profilescript. Esto es lo que ocurre, por ejemplo, cuando inicia sesión en un sistema remoto a través de SSH.

El .bashrcarchivo en sí contiene una serie de configuraciones para la sesión de terminal. Esto incluye la configuración o habilitación: coloración, finalización, el historial del shell, alias de comandos y más. El .bashrcarchivo distribuido con Ubuntu está bien comentado y podrá comprender la mayoría de lo que hace con solo leerlo.

Puede ajustar .bashrca su gusto. Aquí puede obtener un ejemplo con muchas características adicionales.

Luís de Sousa
fuente
El enlace está roto.
rab
1
El enlace está funcionando.
Luís de Sousa
En esa página el archivo de descarga no funciona.
rab
1
Tanto el enlace como la descarga funcionan bien
M. Becerra
5

Pregunta sobre superusuario : ¿Qué es el archivo .bashrc? por @pineapple y respondida por @DigitalRoss

En realidad, es bashespecíficamente lo que lee .bashrc(y /etc/bash.bashrc). Hay muchas conchas diferentes.

La página de manual de bash (por Brian Fox y Chet Ramey; también la página de información "Bash Startup Files" ) es la referencia autorizada:

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde ~/.bashrc, si ese archivo existe. Esto puede inhibirse mediante el uso de la --norcopción. La --rcfileopción de archivo obligará a bash a leer y ejecutar comandos desde el archivo en lugar de ~/.bashrc.

Cuando bash se inicia de manera no interactiva, para ejecutar un script de shell, por ejemplo, busca la variable BASH_ENVen el entorno, expande su valor si aparece allí y usa el valor expandido como el nombre de un archivo para leer y ejecutar. Bash se comporta como si se ejecutara el siguiente comando:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

pero el valor de la PATHvariable no se usa para buscar el nombre del archivo.

El archivo es solo comandos de shell. Por lo general, se usa para cambiar mensajes, establecer variables de entorno y definir procedimientos de shell. Tradicionalmente, el archivo .profilese usa para este propósito, pero bashtiene tantas extensiones que necesita su propio archivo de inicio para los usuarios que desean poner bashismos en los archivos de inicio.

" No es un shell de inicio de sesión " significa cosas como el lanzamiento de scripts y, por lo general, las ventanas de terminal iniciadas por administradores de ventanas. A veces configuro sistemas * nix para tener .bashrcy BASH_ENVsolo fuente .profile. Mientras no se desvíe de los comandos de shell POSIX, obtendrá la misma inicialización en cualquier shell.

Es particularmente valioso cuando shes realmente bash, lo que a veces sucede. Para hacer esto use:

. .profile

Una razón por la que todo esto es tan complejo es porque a veces las personas colocan cosas que producen resultados en archivos de inicio de shell, o establecen incondicionalmente mensajes. Esto causa muchos problemas al ejecutar programas de shell y comandos de retroceso dentro de lenguajes, sin mencionar los system(3)programas en C. La forma en que se bashinicia está diseñada, creo, para tener un archivo donde la configuración de salida y solicitud esté bien y un archivo donde no lo esté. Tradicionalmente, se realizaría una prueba de tiempo de ejecución para distinguir la interactividad, por ejemplo, para verificar si el indicador está configurado.

αғsнιη
fuente