Consulta simple: me acabo de dar cuenta de que nunca he visto un shebang encima de un .bashrc
script, lo que me lleva a pensar que el sistema usa el shell predeterminado para obtenerlo al iniciar sesión ( ${SHELL}
). Estoy reflexionando sobre las razones por las cuales ese es el caso, es decir, se considera un mal hábito usar algo diferente al shell predeterminado para ejecutar el script de inicio de sesión.
22
Respuestas:
.bashrc
y NO.bash_profile
son guiones. Son archivos de configuración que se obtienen cada vez que se ejecutan de una de dos maneras:bash
La sección de INVOCACIÓN de la página de manual de bash es lo relevante.
Puede controlar cuándo se cargan a través de los interruptores de línea de comando,
--norc
y--noprofile
. También puede anular la ubicación de donde se cargan usando el--rcfile
interruptor.Como otros han mencionado, puede imitar cómo se cargan estos archivos mediante el uso del
source <file>
comando o el uso del. <file>
comando.Es mejor pensar en esta funcionalidad de la siguiente manera:
Métodos para invocar
Este tema parece surgir de vez en cuando, así que aquí hay una pequeña hoja de trucos de las diversas formas de invocar
bash
y en qué dan lugar. NOTA: Para ayudar, agregué los mensajes "fuente $ HOME / .bashrc" y "fuente $ HOME / .bash_profile "a sus respectivos archivos.llamadas básicas
bash -i
bash -l
bash -il -o- bash -li
bash -c "..cmd .."
NOTA: ¡ Observe que el
-c
interruptor no originó ninguno de los archivos!deshabilitar la lectura de los archivos de configuración
bash --norc
bash --noprofile
bash --norc -i
bash --norc -l
bash --noprofile -i
bash --noprofile -l
bash --norc -i -o- bash --norc -l
Más formas esotéricas de llamar a bash
bash --rcfile $ HOME / .bashrc
bash --norc --rcfile $ HOME / .bashrc
Estos fallaron
bash -i -rcfile ~ / .bashrc
bash -i -rcfile .bashrc
Probablemente hay más, pero entiendes el punto, con suerte ...
¿Qué más?
Por último, si está tan fascinado con este tema que le gustaría leer / explorar más sobre él, le sugiero que consulte la Guía para principiantes de Bash, específicamente la sección: 1.2. Ventajas del Bourne Again SHell . Las distintas subsecciones bajo esa, "1.2.2.1. Invocación" a través de "1.2.2.3.3. Comportamiento interactivo del shell" explican las diferencias de bajo nivel entre las diversas formas en que puede invocar
bash
.fuente
.bash_profile
incluya una línea para obtener el.bashrc
. Pero creo que eso es muy típico de las configuraciones..bashrc
y.bash_profile
no son guiones . En mi humilde opinión, son scripts de propósito específico que se obtienen implícitamente durante la inicialización de bash o explícitamente cuando necesita aplicar sus modificaciones. No solo configuran el entorno bash (variables, funciones, alias ...) como se espera de los archivos de configuración. Pueden realizar cualquier acción como en los scripts comunes. Por ejemplo, pueden iniciar varias acciones como tareas en segundo plano, escribir registros de registro, inicializar algunos programas, etc. ¡De todos modos, gracias por el resumen detallado!.bashrc
los scripts solo se ejecutanbash
solos. No son independientes, y no están destinados a serexec
modificados por el sistema. (De hecho, generalmente no están marcados como ejecutables y, como usted dice, no tienen una línea shebang).Dichos scripts están destinados a ser
source
d, ya que generalmente hacen cosas como cambiar las variables de entorno ($PATH
por ejemplo), que se espera que persistan después de que finalice el script. Por lo tanto, sería realmente inútil intentar ejecutar uno en una subshell.fuente
Además de las otras respuestas, tenga en cuenta que si lo desea, nada le prohíbe poner un shebang al comienzo de estos archivos de configuración.
Eso no perjudicaría a Shell, ya que el shebang se procesará como un comentario habitual, es decir, se ignorará.
Eso podría ayudar a los editores que usan el resaltado de sintaxis para descubrir qué lenguaje de programación se usa en el archivo.
Sin
vim
embargo, tenga en cuenta que algunos editores ofrecen formas alternativas como modelinas para este último. es decir, siempre puedes poner líneas de modo al final del~/.bashrc
y~/.bash_profile
así:fuente
.bash_profile
recomendación de ShellCheck.Leí esto en cualquier lugar, no sé exactamente dónde, pero es verdad
fuente