Sé que existen /etc/profile
y /etc/bashrc
los archivos de configuración de las variables de entorno globales y tal vez sólo estoy malentendido sus propósitos, pero ...
¿Hay un bash_profile
archivo global ?
Estoy usando Mac OS X
No se llama bash_profile
, pero el lugar estándar para la configuración global de bash es /etc/bash.bashrc
. Es habitual llamar a esto desde /etc/profile
si el shell es bash. Por ejemplo, en mi /etc/profile
tengo:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
En términos de uso, /etc/profile
proporciona una configuración de todo el sistema para todos los shells compatibles con Bourne (sh, bash, ksh, etc.). Normalmente no hay necesidad de un equivalente /etc/bash_profile
, porque la intención del archivo de perfil es controlar el comportamiento de los shells de inicio de sesión. Normalmente, todo lo que quieras hacer allí no será específico de bash. /etc/bash.bashrc
es específico de bash y se ejecutará tanto para shells de inicio de sesión como de inicio de sesión.
Para complicar aún más las cosas, parece que OS X ni siquiera tiene un /etc/bash.bashrc
. Esto probablemente esté relacionado con el hecho de que los terminales en OS X se ejecutan de manera predeterminada como shells de inicio de sesión , por lo que se pierde la distinción:
Una excepción a las pautas de la ventana de terminal es Terminal.app de Mac OS X, que ejecuta un shell de inicio de sesión de forma predeterminada para cada nueva ventana de terminal, llamando a .bash_profile en lugar de .bashrc. Otros emuladores de terminal GUI pueden hacer lo mismo, pero la mayoría tiende a no hacerlo.
No ejecuto OS X, por lo que el alcance de mi conocimiento termina allí.
/etc/bash.bashrc
desde un shell no interactivo./etc/profile
puede leerse mediante un shell no interactivo. ¿Ve la diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?/etc/profile
en Ubuntu 12.04. ¿Qué sugeriría en su lugar si uno quisiera uno/etc/profile
que se ejecutara solo bajo bash y no otro shell compatible con sh?/etc/profile
archivo para mi sistema contiene un comentario en la parte superior que dice:# System-wide .profile for sh(1)
. ¿Esto significa queprofile
essh
específico? ¿Desh
alguna manera corre antesbash
?sh
es un subconjunto debash
./etc/profile
se ejecuta parash
,bash
y todos los demás shells compatibles con Bourne./etc/bashrc
en la Mac, no/etc/bash.bashrc
. También parece ejecutarse/bin/sh
también./etc/profile
Es lo globalbash_profile
. No hay ningún archivo específico para bash, bash solo lee el archivo estándar leído por todos los shell de estilo Bourne. Ahí es donde puede establecer variables de entorno de todo el sistema.Consulte ¿Hay un archivo equivalente ".bashrc" leído por todos los shells? para obtener una descripción general genérica de los archivos de inicio comunes de bash.
fuente
Configurar Shell interactivo (Bash) globalmente
Esto no se carga
/etc/profile
, por lo que no/etc/profile.d/
se carga nada (a diferencia de los shells de inicio de sesión, vea el final).El archivo global para esto es / etc / bashrc o /etc/bash.bashrc (dependiendo del
-DSYS_BASHRC=
indicador establecido en el momento de la compilación):Por lo general, es una buena idea dejar este archivo tal como está (tanto como sea posible) para evitar conflictos. La estrategia que uso es similar a la que usan los shells de inicio de sesión (/ etc / profile).
Mi estrategia es agregar un cargador al archivo anterior:
Ahora puedo agregar fácilmente n personalizaciones al archivo de shell global interactivo (bash) colocando nuevos archivos .sh en el directorio /etc/bashrc.d.
Colorear Grep a nivel mundial
/etc/bashrc.d/grep.sh
Puedes hacer esto con esta frase:
Comparar profile.d versus bashrc.d
Si, después de leer esto, no te convence, hazlo para convencerte:
Abra un nuevo emulador de terminal y busque alguna palabra común en su directorio de usuario como "the" usando grep
Nada debe ser coloreado. Haga lo mismo en una consola virtual haciendo CTRLALTF1 (recuerde que su servidor X probablemente se esté ejecutando en CTRLALTF7 para que pueda volver a cambiar. Si lo olvida, simplemente reinicie su administrador de escritorio, por ejemplo)
producirá resultados coloreados como se desee.
Nada debe ser coloreado. Haga lo mismo en una consola virtual haciendo CTRLALTF1(recuerde que su servidor X probablemente se esté ejecutando CTRLALTF7para que pueda volver a cambiar. Si lo olvida, simplemente reinicie su administrador de escritorio, por ejemplo)
producirá resultados coloreados como se desee.
Un shell de inicio de sesión es lo que obtiene cuando inicia una máquina o cambia consolas virtuales a CTRLALTF1través de FNthla consola virtual.
Se carga un Shell de inicio de sesión
/etc/profile
mientras se cargan los/etc/profile.d/*.sh
archivos.fuente