Consulta simple: me acabo de dar cuenta de que nunca he visto un shebang encima de un .bashrcscript, 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:
.bashrcy NO.bash_profileson guiones. Son archivos de configuración que se obtienen cada vez que se ejecutan de una de dos maneras:bashLa 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,
--norcy--noprofile. También puede anular la ubicación de donde se cargan usando el--rcfileinterruptor.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
bashy 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
-cinterruptor 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_profileincluya una línea para obtener el.bashrc. Pero creo que eso es muy típico de las configuraciones..bashrcy.bash_profileno 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!.bashrclos scripts solo se ejecutanbashsolos. No son independientes, y no están destinados a serexecmodificados 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
sourced, ya que generalmente hacen cosas como cambiar las variables de entorno ($PATHpor 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
vimembargo, 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~/.bashrcy~/.bash_profileasí:fuente
.bash_profilerecomendación de ShellCheck.Leí esto en cualquier lugar, no sé exactamente dónde, pero es verdad
fuente