No puedo encontrar .bash_profile en ubuntu

67

No puedo encontrar .bash_profileen Ubuntu 14.04 en mi /home/userdirectorio. Usé el ls -acomando para ver el .bash_profile, pero no existe ese archivo.

Roledenez
fuente
1
Deberías usar ~/.profileen su lugar.
muru
2
posible duplicado de No puedo encontrar .bash_profile
Alaa Ali
1
Es bastante común que falten algunos archivos de configuración (o incluso directorios). En ese caso, el software que debería leerlos usará una configuración predeterminada y / o leerá otras fuentes para recuperar la configuración. Si desea modificar un archivo de configuración que no existe, simplemente créelo primero.
Bakuriu

Respuestas:

84

Ubuntu utiliza ~/.profile.

puedes crear tu .bash_profileen Ubuntu pero luego .profileno será leído.

Si leemos contenido .profile:

cat ~/.profile

salida

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Así que usa en ~/.profilelugar de~/.bash_profile

nux
fuente
.profile no funcionó para mí. Tuve que editar .bashrc vim ~/.bashrcentonces. ~/.bashrc
Nahid
Usar .bash_profile no funciona en Ubuntu. Utiliza Dash como un shell de inicio de sesión GUI, no Bash, por lo que bash_profile no se lee.
Jonathan Hartley
Si edita su .profile, debe cerrar sesión y volver a iniciarla para ver los cambios.
Jonathan Hartley
8

Al invocar un shell de inicio de sesión bash buscará sus archivos de configuración en este orden:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

Después de encontrar el primero, deja de buscar a los demás, por lo que si hay un .bash_profileen mi $HOMEbash no buscará .bash_loginy .profilenunca más.

A partir de estos tres nombres de archivo, Ubuntu utiliza de manera predeterminada a la .profileque puede cambiarle el nombre .bash_profilesi lo desea:

mv ~/.profile ~/.bash_profile

Ahora bien, si abrimos una nueva shell bash usando bash -l, su - $USER, sudo -u $USER -io cualquier otro comando que se ejecuta bash como un intérprete de ingreso, ~/.bash_profileserá conseguir origen.

Importante tener en cuenta:

Lo que he hablado hasta ahora solo se aplica a Bash en sí, cuando inicia sesión en el sistema desde una GUI, el administrador de pantalla es responsable de obtener los archivos correctos.

Ubuntu usa gdm3como su administrador de pantalla, si echamos un vistazo a: /etc/gdm3/Xsessionpodemos ver que ninguno de los archivos se obtendrá excepto .profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

así que si está utilizando una GUI para iniciar sesión, mantenga el archivo bajo su .profilenombre, de lo contrario, podría perder algunas variables y configuraciones en sus entornos.

Supongo que la mejor opción es crear un enlace simbólico para .profile:

ln -s ~/.profile ~/.bash_profile

Ahora sus datos viven .profile, gdmno se pierde nada, carga bash lo .bash_profileque realmente es .profile, y al editar cada uno de ellos obtiene el mismo resultado.

¿Falta el perfil?

Si no lo tienes .profile, toma una copia de aquí:

cp /etc/skel/.profile ~/.profile

o

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
Ravexina
fuente
Pero, si Bash está buscando ~ / .bash_profile primero, ¿cómo es que no está haciendo esto en Ubuntu? ¿Ubuntu ha modificado Bash? Esto parece extraño man bashen Ubuntu todavía describe cómo buscará .bash_profile primero.
Jonathan Hartley
Se ve de .bash_profile primera no puede encontrarlo (porque no existe) a continuación, busca .bash_loginno lo encuentra de nuevo (porque no lo hace Ubuntu utiliza estos dos nombre) finaly busca .profiley sí ahí está. Así que si se crea una .bash_profilede ~entonces va a sobrescribir de ubuntu ~/.profile, que es el comportamiento por defecto de la nada golpe ha sido modificado aquí.
Ravexina
Bien, eso es lo que pensé al principio, ¡también! Y lo que usted describe SUCEDE en RHEL. Pero en Ubuntu, no lo hace. Si creo un .bash_profile, no se lee. Me acabo de dar cuenta de que esto se debe a que Ubuntu ya no usa 'Bash' como un shell de inicio de sesión GUI. Utiliza 'Dash' en su lugar. Creo que esto ha sido cierto desde aproximadamente 18.04.
Jonathan Hartley
Te estás perdiendo el punto aquí. En realidad, estamos hablando del bash en sí, lo que digo aquí es que Ubuntu crea '.profile' y no los demás, por lo que si abrimos un nuevo shell bash (shell de inicio de sesión) ese es el orden de leer estos archivos, no No importa qué distribución estamos usando. :)
Ravexina
Si los lectores cambian el nombre de .profile a .bash_profile como sugiere su respuesta, entonces, para las personas en Ubuntu, ese archivo no se leerá al iniciar sesión ni al abrir una terminal. Has roto su sistema. La única forma en que se leerá ese archivo es si inician sesiones bash con el argumento '--login' para convertirlo explícitamente en un shell de inicio de sesión. Eso nunca sucederá automáticamente en su escritorio.
Jonathan Hartley
5

Eso significa que el archivo no existe. Pero puede crear el archivo y bashejecuta / origina el archivo si bashse invoca como un shell de inicio de sesión. Así que cada vez que inicie sesión a través de un shell (por ejemplo a través de ssh)

Si desea que el contenido se ejecute cada vez que abra un terminal, debe modificar el .bashrcarchivo.

caos
fuente
¿Puedes hacerte una idea de por qué falta el archivo .bash_profile?
Roledenez
Puedes copiarlo del /etc/skel/directorio.
Frantique
Es una decisión de diseño canónico. Pero eso no significa que no pueda hacerlo.
caos
Le expliqué la razón .bash_profileque falta (y no funciona) en Ubuntu en los comentarios sobre otras respuestas.
Jonathan Hartley
2

La mejor respuesta para usar en ~/.profilelugar de ~/.bash_profileno funcionó para mí.

Modificar .bashrctrabajado

Sólo:

vim ~/.bashrc

Nota: estoy usando Ubuntu WSL.

cryanbhu
fuente
En Linux original, el .profile se aplica cuando inicia sesión en la GUI, o se conecta de forma remota, o inicia sesión en la consola, es decir, después de presionar ctrl + shift + F2. Se supone que representa la primera vez que inicia sesión en la máquina, creando un shell que es el principal de todos los demás procesos que crea posteriormente. Sospecho que en WSL, no existe nada de esto, por lo que su .profile podría nunca leerse.
Jonathan Hartley
lo mismo para mi. ~/.profilesimplemente no se carga por defecto en ubuntu 18.04
javapowered
0

Si te refieres al .bashrc, lo encontrarás en tu carpeta de inicio. Si no está allí, puede copiarlo desde la carpeta / etc / skel a su carpeta de inicio.

Si necesita más información sobre este tema, visite la página de stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

Mentira
fuente