Los archivos ~/.bashrc, ~/bash_profile, /etc/bashrc, /etc/profile. Cual utilizar?

per Roger Borrell darrera modificació 2020-03-25T16:14:06+02:00
Descrpción del uso de los archivos ~/.bashrc, ~/bash_profile, /etc/bashrc, /etc/profile

NOTA: ~ significa la ruta al directorio personal (Ej:"/home/juanito" es lo mismo que "~" para juanito) Dicho de otra forma contiene lo mismo que la variable $HOME

Estos cuatro archivos tienen en común que:

  • Son ficheros de texto.
  • Se pueden modificar con cualquier editor de texto como kwrite, emacs, vi, pico....
  • Son shell scripts. También llamados guiones o archivos por lotes. ( Lo que en windows son los archivos *.bat o *.cmd pero mucho, mucho más potente)
  • Son ficheros que el sistema operativo ejecuta de forma automática cuando se da una cierta condición.
  • En el forndo lo que hace el sistema operativo es mandar a bash (el programa interprete de comandos más usual de Linux) ejecutar los archivos.
  • Podemos incluir en ellos cualquier orden de la linea de comandos.
  • Suelen confundir al personal. De hecho hay bastante confusión circulando.

Estos cuatro archivos difieren en:

  • Solo existe una sola copia de los archivos /etc/profile y /etc/bashrc.
  • Cada usuario tiene su propia copia de los archivos .bashrc y .bash_profile. (Estos archivos se encuentran en el directorio personal de cada usuario (~). El punto hace que estos archivos sean ocultos. Para ver si los tiene pruebe:
    ls -a ~ 
  • Los archivos /etc/profile y /etc/bashrc afectan a todos los usuarios.Por tanto son gestionados por el administrador del sistema (root).
  • Como cada usuario tiene su propia copia de los archivos .bashrc y .bash_profile, su copia le pertenece y se la puede autogestionar. Para acceder a su archivo pruebe en la linea de comandos:
    vi ~/.bashrc 
    o
    vi ~/.bash_profile 
    Verá algo parecido a esto:
    
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    	. ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    unset USERNAME
    
    Puede editar el texto pulsando la tecla i. Cuando finalize tiene dos opciones:
    • ESC + :wq --> Guardar los cambios
    • ESC + :q! --> Salir sin guardar los cambios
    Si lo que quieres es entender el contenido del archivo tendrás que hacerte un paseo por los shell scripts, las variables de entorno y la sintaxis que utiliza el bash para el control de flujo

Lo más importante. Cual de ellos utilizar:

Podemos clasificar estos cuatro archivos en función de si los comandos que contienen afectan a un solo usuario o contrariamente todos los usuarios del sistema se ven afectados.

Vamos a ver en cada uno de los casos, bajo que condiciones se ejecutan los archivos.

Para todos los usuarios: (Se necesita permisos de root para editar/modificar estos archivos)

/etc/profile --> Se ejecuta cuando qualquier usuario inicia la sesión.
/etc/bashrc --> Se ejecuta cada vez que qualquier usuario ejecuta el programa bash

Para nuestro usuario:

~/.bash_profile --> Se ejecuta el .bash_profile de juanito cuando juanito inicia su sesión.
~/.bashrc --> Se ejecuta el .bashrc de juanito cuando juanito ejecuta el programa bash.

Mas información en:
.bash_profile
.bashrc
Roger Borrell Anglada (blog) (IES Puig Castellar)
Jo també estic endollat a la XEiLL