Respuestas:
En realidad, es bash
especí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--norc
opción. La--rcfile
opció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_ENV
en 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
PATH
variable 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 .profile
se usa para este propósito, pero bash
tiene 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 los administradores de ventanas. A veces configuro sistemas * nix para tener .bashrc
y BASH_ENV
solo 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 sh
es 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 avisos. 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 bash
inicia 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.
Cuando se inicia Bash, ejecuta los comandos en una variedad de scripts diferentes.
Cuando se invoca Bash como un shell de inicio de sesión interactivo, primero lee y ejecuta comandos del archivo / etc / profile, si ese archivo existe. Después de leer ese archivo, busca ~ / .bash_profile, ~ / .bash_login y ~ / .profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible.
Cuando sale un shell de inicio de sesión, Bash lee y ejecuta comandos del archivo ~ / .bash_logout, si existe.
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 utilizando la opción --norc. La opción de archivo --rcfile obligará a Bash a leer y ejecutar comandos desde el archivo en lugar de ~ / .bashrc.
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
Aquí hay algunos trucos y consejos:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Intentemos configurar el indicador para que pueda mostrar la fecha y el nombre de host de hoy:
PS1="\d \h $ "
.profile
después .bash_profile
? Alguna lógica?
Debe contener varios comandos de "inicialización" para su shell, por ejemplo:
alias ll='ls -l'
).ll='ls -l'
permite escribir ll
para ejecutar el ls -l
comando.