¿Cuál es la diferencia entre /etc/bash.bashrc y ~ / .bashrc? ¿Cuál debo usar?

20

¿Cuándo debo usar cada uno de los dos archivos .bashrc para configurar mis alias, prompt, etc.?

cfischer
fuente

Respuestas:

34

/etc/bash.bashrc se aplica a todos los usuarios

~/.bashrc solo se aplica al usuario en la carpeta de inicio en la que se encuentra.

Loïc Wolff
fuente
3
E implícito en la respuesta de dex es ... Use su ~ / .bashrc local en todos los casos, excepto donde desee imponer su voluntad a todos los que usan esa máquina.
dacracot 01 de
Estrictamente hablando, no está aplicando nada en /etc/bash.bashrc porque los usuarios siempre pueden cambiarlo en su propio ~ / .bashrc
Kim
... excepto cuando alguien decide hacer todas las variables readonlyen /etc/bash.bashrc: \
grawity
1
En Ubuntu, este archivo, como se comentó al principio, tiene que ser "obtenido" del archivo / etc / profile. Agregué un comando alias al final de /etc/bash.bashrc, y agregué el comando "source /etc/bash.bashrc" al final del archivo / etc / profile. Funciona de maravilla.
jfmessier
2

De acuerdo con la documentación de GNU 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. La opción --noprofile se puede usar cuando se inicia el shell para inhibir este comportamiento.

Se invoca como un shell interactivo sin inicio de sesión Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, Bash lee y ejecuta comandos desde ~ / .bashrc , si ese archivo existe. Esto puede inhibirse utilizando la opción --norc. La opción de archivo --rcfile obligará a Bash a leer y ejecutar comandos desde el archivo en lugar de ~ / .bashrc.

Entonces, típicamente, su ~ / .bash_profile contiene la línea

si [-f ~ / .bashrc]; luego . ~ / .bashrc; fi

después (o antes) de cualquier inicialización específica de inicio de sesión.

Felipe Alvarez
fuente
1
Realmente no. Mire este archivo git.savannah.gnu.org/cgit/bash.git/tree/shell.c , en la función run_startup_files () donde se usa SYS_BASHRC, definido en git.savannah.gnu.org/cgit/bash.git/ tree / config-top.h
mloskot
1

Para sus preferencias personales y scripts personales o funciones bash, debe usar .bashrc (alias, funciones agregadas a bash ...)

En el momento en que desee compartir algo con todos los usuarios (o la mayoría de los usuarios) o para cosas de uso general (Ruta para archivos ejecutables compartidos, ruta para documentación ...) póngalo en /etc/bash.bashrc

Dije a la mayoría de los usuarios porque incluso digamos que especificas un script greetings.sh que imprime "Hello world!"para todos los usuarios, pero el usuario Pepe quiere usar en su lugar el script greetings.sh que imprime "Hola el mundo!". Puede modificar su camino en su .bashrc para señalar su guión en lugar del suyo. En otras palabras, el usuario siempre puede personalizar su sesión en .bashrc a lo que quiera.

Depurador
fuente