¿Cuál es la mejor práctica para personalizar el indicador de Bash (también conocido como la variable de entorno de PS1)?

¿Cuál es la mejor práctica para personalizar el indicador de Bash (también conocido como la variable de entorno de PS1)?

Estoy intentando agregar el nombre de la rama Git a mi indicador de Bash cambiando la PS1variable de esta manera:

PS1=`echo "$PS1" | sed 's/\\\\\$ $/\$(__git_ps1)\\\\\$ /'`

Y si entendí correctamente, no se recomienda actualizar ~/.bashrccon fines de personalización. Todos los artículos que encontré sugieren actualizarlos .profilepara .bash_profiletales fines. Por eso estoy buscando un lugar perfecto para colocar esta línea.

Estos son los lugares que he probado hasta ahora:

  • .profile: no obtenido porgnome-terminal
  • .bash_profile: no obtenido porgnome-terminal
  • .bash_login: no obtenido porgnome-terminal
  • .bash_aliases: funciona, pero no creo que PS1tenga nada que ver con alias

Estoy usando Ubuntu Desktop y trabajo en gnome-terminalo byobu, así que tengo que encontrar un archivo que se obtiene cuando inicio bashen un entorno X. Luego busqué .bashrcotros archivos de los que proviene después de asignar un valor a PS1. Los hay .bash_aliasesy /usr/share/bash-completion/bash_completionno creo que sean adecuados para este propósito.

¿Cuáles son otras opciones? ¿Y cuál es la mejor práctica para personalizar el indicador de Bash?

Respuesta1

Según el siguiente CÓMO, .bashrcen realidad este es el mejor lugar para modificar $PS1:

la cadena PS1 debe estar configurada en .bashrc. Esto se debe a que los ataques no interactivos hacen todo lo posible para desarmar la PS1. La página de manual de bash indica cómo la presencia o ausencia de PS1 es una buena manera de saber si uno está en una sesión de bash interactiva o no interactiva (es decir, script).

[...]

por lo tanto cabe recalcar que PS1=..blah..debe estar dentro .bashrcy no .profile.

Fuente:http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/setps.html

Respuesta2

Estoy de acuerdo con @sylvain-pineau en que debería ubicarse en .bashrc.

Estoy usando un script de shell git-prompt que bifurqué en github. Funciona muy bien con git, svn y hg. Le muestra en qué rama se encuentra, qué archivos tiene que son nuevos, qué archivos han cambiado (en diferentes colores) y el estado de su último comando bash.

Puedes descargarlo así:

wget https://raw.githubusercontent.com/stalet/git-prompt/master/git-prompt.sh
chmod +x git-prompt.sh

Luego, en .bashrc, estoy usando una prueba para ver si mi script git-prompt está disponible y luego obtenerlo:

[[ -s ~/config/git-prompt.sh ]] && source ~/config/git-prompt.sh

Descargo de responsabilidad, estoy comprometido con el proyecto github git-prompt.

información relacionada