Recuerdo en general lo que hace, pero no específicamente:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
¿Cuál es el propósito exacto de nuevo?
Recuerdo en general lo que hace, pero no específicamente:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
¿Cuál es el propósito exacto de nuevo?
Esto genera un archivo ~/.bashrc
si existe y carga el contenido de ese archivo.
La respuesta breve a tu pregunta es: hiciste esto, no importa cómo llegues a tu máquina, a través de un shell abierto en una sesión de escritorio interactiva o un inicio de sesión ssh a la máquina, tu shell bash
tiene una configuración consistente a ello.
La respuesta más larga de por qué tuvo que hacerlo de esta manera se encuentra a continuación ...
La razón por la que querría hacer esto está impregnada de bash history: uno de esos archivos se usa para inicios de sesión interactivos, el otro se usa para inicios de sesión no interactivos. La idea de tener dos configuraciones diferentes es que es posible que desee algunas cosas en su shell interactivo (un indicador elegante, un mensaje del día, colorización de la salida de sus comandos, etc.) que no desearía en una sesión no interactiva porque dispara el acceso programático a entrada y salida y lo que no.
Para la mayoría de los usuarios, aunque desea que ambos entornos sean iguales. La mayoría de nosotros no estamos ejecutando configuraciones bash lo suficientemente complicadas como para justificar la separación de configuraciones interactivas y no interactivas como esta.
El .bash_profile
se ejecuta para shells de inicio de sesión, mientras que .bashrc
se ejecuta para shells interactivos sin inicio de sesión.
Hay un un buen artículo de Josh Staiger que habla sobre por qué uno sobre el otro y cómo recordar dónde poner las cosas . Permítame citar algunos de ellos aquí:
¿Qué es un shell de inicio de sesión o no de inicio de sesión?
Cuando inicia sesión (escriba el nombre de usuario y la contraseña) a través de la consola, ya sea sentado en la máquina, o de forma remota a través de
ssh
: se ejecuta.bash_profile
para configurar su shell antes de la solicitud de comando inicial. Pero, si ya ha iniciado sesión en su máquina y abre una nueva ventana de terminal (xterm
) dentro de Gnome o KDE, entonces se ejecuta.bashrc
antes del indicador de comandos de la ventana..bashrc
también se ejecuta cuando inicia una nueva instancia de bash escribiendo/bin/bash
en un terminal.Mac OS X: una excepción
Una excepción a las pautas de la ventana de terminal es
Terminal.app
de Mac OS X, que ejecuta un shell de inicio de sesión de forma predeterminada para cada nueva ventana de terminal, llamando a.bash_profile
en lugar de.bashrc
. Otros emuladores de terminal GUI pueden hacer lo mismo, pero la mayoría tiende a no hacerlo.Recomendación
La mayoría de las veces no desea mantener dos archivos de configuración separados para shells de inicio de sesión y de no inicio de sesión: cuando establece una RUTA, desea que se aplique a ambas. Puede solucionar este problema obteniendo
.bashrc
de su archivo.bash_profile
, luego poniendo PATH y la configuración común en.bashrc
.Para hacer esto, agregue las siguientes líneas a .bash_profile:
if [ -f ~/.bashrc ]; then source ~/.bashrc fi
Ahora, cuando inicies sesión en tu máquina desde una consola, se llamará
.bashrc
.
Vea la descripción de Ian C de lo que hace la línea de origen
Esto está rodeado por una declaración if
if x; then
....
fi
esto comprueba en x y luego ejecuta el código entre then y fi (la idea de fin de finalización y si y otras finalizaciones invirtiendo la palabra clave de inicio se usa en sh y shells relacionados.
La comprobación que se realiza aquí es [ -f ~/.bashrc ]
, que es lo mismo que test -f .bashrc
el if le dice a la prueba que devuelva true si lo que sigue es un archivo y existe.
Así que el código sobre dice que si hay un .bashrc ejecutarlo en su shell circular.
Lea otras preguntas en las etiquetas terminal macos command-line