Sé la diferencia entre los dos scripts de inicio de sesión de bash:
.bashrc
se ejecuta solo con shells "sin inicio de sesión".
.bash_profile
(o .bash_login
o .profile
) es ejecutado por conchas "Login".
¿Alguien tiene algunos buenos ejemplos de las cosas que mejor se ajustan a la ejecución solo de inicio de sesión, de modo que solo las pondría .bash_profile
, pero realmente no tendrían sentido .bashrc
?
(Sé que la mayoría de nosotros proviene .bashrc
de .bash_profile
, por lo que no parece tener mucho sentido la pregunta opuesta ...)
Respuestas:
Como a
.bashrc
es para shells que no son de inicio de sesión, evito cualquier comando que haga eco en la pantalla. También me he encontrado con experiencias en las que las declaraciones echo.bashrc
causarán que los comandos sftp y rsync fallen (y tal vez también los comandos scp).Además, generalmente no ejecutará ssh-agent desde un shell no interactivo. Entonces tengo esto adentro
.bash_profile
.fuente
.bashrc
interfieren con los métodos de transferencia remota de archivos implementados a través de flujos estándar , la solución es colocar dichos comandos en un código que verifique si el shell es interactivo y continúa solo si lo es. Los.bashrc
archivos predeterminados de los usuarios en Ubuntu, copiados desde la/etc/skel/.bashrc
creación de la cuenta, así como en todo el sistema/etc/bash.bashrc
, ya contienen código que verifica y devuelve si el shell no es interactivo (aunque uno todavía debe poner los comandos de producción de salida debajo de ellos).Byobu es un gran ejemplo de algo que nunca deberías poner en
.bashrc
.De lo contrario, se ejecutará recursivamente en cada uno de sus 'terminales virtuales' ;-)
Sin embargo, puedes probarlo, es divertido.
Es por eso que lo pones
.profile
, por lo que byobu (que realmente es una simple envoltura alrededor de la pantalla) solo se carga, una vez, al momento de iniciar sesión. Y byobu mismo puede comenzar nuevas sesiones interactivas de bash.fuente