Leí un poco sobre el inicio de Linux, etc. y noté que en mi directorio de inicio no hay una carpeta profile.d
:
/home/user/profile.d/ # Doesn't exists
y ni un archivo .bash_profile
:
/home/user/.bash_profile # Doesn't exists
¿Hay alguna razón para esto?
Ubuntu 15.04, gnomo
Respuesta1
Respuesta corta:está bien así.
Hay muchos archivos de usuario de inicialización porque un usuario puede decidir iniciar sesión en una cuenta de computadora de muchas maneras diferentes, desde la consola, con un shell interactivo o no interactivo, con diferentes tipos de shell. No es prerrogativa de todos los usuarios, sino de la necesidad de mantener uncompatibilidad con versiones anterioresterminó de complicarseun pocolas cosas. :-)
un directorio
profile.d
no debería estar en su directorio de inicio:
/etc/profile.d
contiene scripts con archivos de inicio específicos de la aplicación, que el shell también ejecuta en el momento del inicio. Es un directorio válido para todos los usuarios, para ello se crea bajo la/etc/
ruta y no bajo el directorio de inicio de cada usuario.El archivo
~/.bash_profile
es uno de los archivos de inicialización personal y cuando existe se almacena en el domicilio de cada usuario.Pero no es necesario que exista.Debe contener los comandos específicos de bash que se ejecutarán al iniciar un shell de inicio de sesión (~/.profile
también se puede leer desde diferentes shells, que generalmente entienden una sintaxis diferente a la de bash).
Leer más de la INVOCATION
sección deman bash
Cuando se invoca bash como un shell de inicio de sesión interactivo (...)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 desde el primero que existe y es legible.
Entonces, si tiene un ~/.bash_profile
archivo, no se leerá ~/.profile
, si no se llama (o se obtiene) en uno de los otros archivos.
Tenga en cuenta que
Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde
/etc/bash.bashrc
y~/.bashrc
, si estos archivos existen.
De alguna versión de Ubuntu 12 (y seguramente de la 13.10) se .profile
obtiene el archivo ~/.bashrc
.
Esto puede causar un comportamiento inesperado al ejecutar shells de inicio de sesión (como cuando
ssh
se ingresa a la máquina, por ejemplo) donde el usuario no esperaría haber~/.bashrc
accedido.
Referencia:
- En la Guía para principiantes de Bash (no tan), la sección sobreArchivos de inicialización de Shell
- ¿Por qué la fuente ~/.profile predeterminada de Ubuntu ~/.bashrc?