[eside-ghost] Scripts de inicio de bash

AngelD angeld en froga.net
Lun Mar 12 15:37:14 CET 2007


On Mon, March 12, 2007 14:05, Eneko chan wrote:
> Estoy mirando que scripts se ejecutan al hacer login. De momento me queda
>  claro que se ejecutan en este orden:
>
> 1.- /etc/profile
> 2.- El primero que se encuentre de estos 3 en este orden: ~/.bash_profile,
> ~
> /.bash_login o ~/.profile.

 Hasta aquí todos de acuerdo.

> Luego viene la parte que no me entero. Mirando la página man bash 1 sale:
>
> When an interactive shell that is not a login shell  is  started,
> bash reads  and  executes  commands  from /etc/bash.bashrc and
~/.bashrc, if
>  these files exist.
>
> Lo que no entiendo es que es una "interactive shell that is not a login
> shell", y por eso me pierdo y no se en que casos se ejecutaran esos script
> o no.

 Bien, diferencia entre "login shell" y "interactive shell"
  - login shell -> La que se ejecuta cuando te "logueas" en un sistema.
Esta ejecuta '/etc/profile' y '~/.bash_profile' o '~/bash_login' o
'bash_profile', por ese orden.

  - interactive shell -> La que se ejecuta cuando "ejecutas" un script,
por ejemplo. Esta ejecuta '/etc/bashrc' y '~/.bashrc'

> Luego segun he leido en una página primero se ejecutaria ~/.bashrc y
> despues /etc/bash.bashrc. Pero segun la pagina de man es alreves. Menudo
> lio :S jajaj

 Primero se ejecutan SIEMPRE los perfiles globales (los de etc) que
correspondan, ejecutándose posteriormente los de usuario.

 Algunas distribuciones (ej, RedHat), ejecutan e '~/.bashrc' dentro del
'~/.bash_profile'

 Se pueden forzar a que la shell sea interactiva (-i), login shell (-l), a
que no ejecute los ficheros cuando es un login shell (--noprofile) o
cuando es interactiva (--norc).


 Ya sabes, en caso de duda prueba y error. Empiezas a crear los ficheros
adecuados, con los "echo esto es .profile" en su interior para poder
tracearlos.

 saludos --- Angel




Más información sobre la lista de distribución eside-ghost