57 votos

¿Dónde está el .bash_profile?

Quiero poner nuevos alias a mi .bash_profile pero no puedo encontrar este archivo.
¿Dónde se supone que está?

54voto

tidbeck Puntos 281

Es un archivo oculto, ubicado en tu carpeta de inicio:

~/.bash_profile

(el ~ se expande a su directorio personal. Si su nombre de usuario es user el resultado sería: /home/user/.bash_profile ).

Como es un archivo oculto, tienes que hacerlo visible. Para hacerlo en Nautilus ve al menú "Ver" y marca "Mostrar archivos ocultos" (o pulsa el atajo Ctrl + H ).

Si estás usando Kubuntu con Dolphin, tienes que pulsar Ctrl + . para alternar la visibilidad de los archivos.

3 votos

Las teclas Ctrl-H también permiten mostrar/ocultar los archivos ocultos.

0 votos

Dulce no sabía de ese ctrl+H

0 votos

ls -al muestra los archivos ocultos si ctrl -h no funciona

15voto

Steve Karg Puntos 11

~/.bash_profile no es el lugar adecuado para colocar los alias y las funciones. Deberían ir en ~/.bashrc . Ver http://mywiki.wooledge.org/DotFiles para una explicación.

0 votos

Sí, ¿linkux se encarga automáticamente de traer ~/.bash_profile? No veo que se extraiga automáticamente al abrir una nueva sesión de terminal

0 votos

@AlexanderMills, por defecto al abrir un emulador de terminal se ejecuta el Shell en modo interactivo (pero no en modo login), por lo que no se lee .bash_profile ya que bash sólo intenta leerlo en modo login. .bash_profile se utilizará cuando se inicie la sesión vía ssh o en una consola virtual (ctrl+alt+f1-f6). Cuando se inicia la sesión gráficamente, no hay bash involucrado, por lo que no se lee .bash_profile, sin embargo, el proceso de inicio de sesión gráfico ejecutará sh y hará que sh origine .profile específicamente, antes de ejecutar la sesión (por ejemplo, gnome-session). Así que las variables de entorno establecidas en .profile estarán disponibles en la sesión.

9voto

Ken Liu Puntos 123

No suele tener .bash_profile en Ubuntu, ni deberías suele crear ese archivo. Como jpezz dice estaría en su directorio de inicio en su sistema Ubuntu, que es lo que ~ significa, y puedes crearlo allí. Pero si lo hace, debe tener cuidado, porque evitará bash de ejecutar automáticamente los comandos en .profile --que es casi seguro que hacer tener.

Cuando bash se ejecuta como un inicio de sesión Shell En la WSL o en otra parte 1 , ejecuta la primera de .bash_profile , .bash_login o .profile que existe en su directorio personal. Si tiene bash -comandos específicos que quieres ejecutar cuando te conectas, pero sólo cuando bash es su Shell--puede ponerlos en .bash_profile . Pero la mera existencia de .bash_profile impediría .profile de ser utilizado.

Así que entonces querrías fuente .profile de .bash_profile , suponiendo que quieras que se ejecuten también esos comandos, lo que casi siempre es así. Puedes hacerlo poniendo este comando en .bash_profile :

. ~/.profile

(Algunos lectores pueden estar acostumbrados a ver esto escrito como . "$HOME/.profile" cuando aparece en un script de inicio. Eso siempre está bien--y puede que prefieras usar eso para los comandos que necesitan trabajar en shells diferentes a bash también, si necesita acomodar carcasas extremadamente antiguas que no soportan características estándar que bueno, no necesitas eso. En cualquier caso, bash siempre apoya expansión de la tilde y el punto de .bash_profile es que sólo bash ejecuta comandos desde él, por lo que . ~/.profile está bien).

El . El builtin origina un archivo, es decir, ejecuta todos los comandos del archivo en el Shell actual. Abre un archivo interactivo bash Shell y ejecutar help . para más información.

La razón por la que no suele tener .bash_profile en Ubuntu incluso si tiene bash -comandos específicos que desea ejecutar al iniciar la sesión es que, por defecto, los usuarios .profile contienen código que comprueba si el Shell actual es bash , hace que se ejecuten estos comandos.

Hay otra respuesta a la pregunta de dónde están los archivos como .profile o .bash_profile son. Las versiones por defecto de estos archivos existen en el /etc/skel directorio. Los archivos de ese directorio se copian en los directorios de inicio de Ubuntu cuando se crean cuentas de usuario en un sistema Ubuntu, incluida la cuenta de usuario que se crea como parte de la instalación de Ubuntu. Si miras en ese directorio, notarás que hay un archivo llamado .profile --así como algunos otros archivos como .bashrc -pero no hay ningún archivo llamado .bash_profile . Por eso o, en realidad, cómo --no .bash_profile existe en su directorio principal de Ubuntu a menos que lo haya creado usted mismo.


Por último, debe no poner alias en .profile en absoluto, ni es .bash_profile un buen lugar para ellos, como geirha dice con razón . Esto se debe a que querrá que sus alias funcionen en shells interactivos, sean o no shells de inicio de sesión. En su lugar, defina sus alias en .bashrc o, mejor, .bash_aliases (como el invitado boeroe señala ), que el valor por defecto .bashrc fuentes. Véase ¿Cómo puedo crear un alias permanente de Bash?

El valor por defecto .profile comprobará si está ejecutando un bash Shell y fuente .bashrc si lo eres:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Mientras tanto, el valor por defecto .bashrc saldrá en la parte superior sin hacer nada si se ejecuta en un Shell no interactivo, por lo que los comandos en él no se ejecutarán si se obtiene el origen de .profile en un no interactivo login Shell y en otros escenarios más oscuros 2 :

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Así que si usted poner alias en .bashrc o en .bash_aliases , los obtendrá para los shells de inicio de sesión interactivos (donde .profile ), así como en los shells interactivos que no son de inicio de sesión (en los que se utiliza .bashrc se utiliza). Esto es lo que quieres. Simplemente no pongas nada por encima de la comprobación de la interactividad, a menos que realmente, realmente saber lo que estás haciendo.


1 Esta respuesta fue escrita originalmente para una pregunta relacionada con la WSL pero esa pregunta ha sido cerrada como duplicada y esta respuesta se aplica plenamente aquí también, así que la he ampliado un poco y la he publicado aquí en su lugar.

2 Cuando bash detecta que probablemente se está ejecutando como el Shell inicial de un inicio de sesión remoto que es no un inicio de sesión Shell--como cuando se utiliza ssh para ejecutar un solo comando en una máquina remota--ejecuta comandos desde .bashrc . (Ver 6.2 Archivos de inicio de Bash en el Manual de GNU Bash .)

5voto

guest boeroe Puntos 21

Es práctico poner todos los alias en ~/.bash_aliases en el directorio principal del usuario. Eso es lo que se sugiere en el ~/.bashrc en los comentarios.

0voto

TheoJones Puntos 269

Al cerrar sólo pienso en usar ; como en muchos lenguajes de programación y luego escaparlo. Sólo recuerde que es necesario escapar y viene a usted con bastante facilidad.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: