¿Dónde se encuentra el archivo .bashrc en Linux?

13

No encuentro mi .bash_login y .bash_profile

root@linux:~# locate .bash*
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bashrc.original
/home/noroot/.bashrc
/home/noroot/.bashrc.original
/root/.bash_history
/root/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
/usr/share/kali-defaults/.bashrc
root@linux:~# 

¿Siempre hay un solo archivo .bashrc y .bash_profile para cada usuario?

Y, ¿se encuentran siempre .bashrc y .bash_profile en el directorio / home / "nombre de usuario"?

Jeff Schaller
fuente

Respuestas:

14

Los únicos que bash mira por defecto están en el directorio de inicio del usuario, sí. Por lo general, también hay una única fuente para ellos en Linux: / etc / skel. Sin embargo, el directorio de inicio del usuario no necesita estar debajo de / home.

Veo que ha editado su pregunta para preguntar dónde están sus archivos .bash_login y .bash_profile. Según el #aviso, voy a suponer que está ejecutando esto como root. En ese caso, sus archivos son

/root/.bash_history
/root/.bashrc

Vea mi respuesta original anterior con respecto al directorio de inicio de un usuario: no siempre es / home; en este caso, el directorio de inicio de root es /root.

Jeff Schaller
fuente
9

De acuerdo a man bash:

Cuando se invoca bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la opción --login, primero lee y ejecuta comandos del archivo / etc / profile, si ese archivo existe. Después de leer ese archivo, busca ~ / .bash_profile, ~ / .bash_login y ~ / .profile, en ese orden, y lee y ejecuta comandos del primero que existe y es legible.

~/.bash_profile
    The personal initialization file, executed for login shells

~/.bashrc
    The individual per-interactive-shell startup file

También hay /etc/bashrc( /etc/bash.bashrcen Linux basado en Debian) que contiene System wide functions and aliases. De manera predeterminada, esto está configurado, incluso para shells no interactivos y sin inicio de sesión.

EDITAR:

El tildeen las rutas indica el home directorydel usuario actualmente conectado. Bash solo puede usar uno de ~/.bash_profile, ~/.bash_login, or ~/.profile(por usuario actualmente conectado), en ese orden, para leer y ejecutar comandos. (Los sistemas operativos basados ​​en Debian generalmente no tienen). ~/.bash_profile or ~/.bash_login. Usan el archivo ~/.profile. Este archivo explica que será leído y usado a menos que ~/.bash_profile or ~/.bash_loginse cree.

#~/.profile: executed by the command interpreter for login shells.

#This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login existe

Timothy Martin
fuente
¿De qué manera responde esto a mi pregunta?
1
@BROY Responde la pregunta que deberías haber hecho en lugar de la que hiciste.
Shadur
He visto a algunas personas poner un archivo .bash_profile en los directorios del proyecto, ¿eso realmente es recogido por bash? No creo que eso deba suceder por defecto.
Alexander Mills
5

bashrcLa ubicación de su archivo depende de la distribución ... Aquí hay una lista básica para el sistema bashrc:
/etc/bashrc(Redhat, Fedora, etc.)
/etc/bash.bashrc(Debian, Ubuntu, Linux Mint, Backtrack, Kali, etc.)
/etc/bash.bashrc.local(Suse, OpenSuse, etc.)
Luego está el usuario individual privado bashrc, que, en su mayor parte, se almacena ~/.bashrcbásicamente para cada distribución ... Si no tiene una de las distribuciones enumeradas, o tiene un sistema especial, siempre puede buscar la bashrcubicación en Google para esa distribución o sistema ...
Saludos,
Interesante ...

Interesante...
fuente
1

Como la gente ya ha dicho, puede encontrar un esqueleto de bashrc en /etc/skel/.bashrc. Si diferentes usuarios desean diferentes configuraciones de bash, debe colocar un archivo .bashrc en la carpeta de inicio de ese usuario.

Cuando se trata de .bash_profile y .bash_login, el usuario debe crearlos manualmente y vincularlos a través de bashrc. bash_profile y bash_login existen para crear una sensación más organizada para las diferentes configuraciones que carga. Personalmente mantengo todos mis alias en bash_profile para no tener que ordenar un desorden en bashrc para hacer una edición rápida.

Aquí hay un ejemplo de lo que tendría en su archivo .bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi
Peschke
fuente