¿Por qué se cambia físicamente la PS1 en el archivo, en contra de mi voluntad, mediante algún proceso externo?

¿Por qué se cambia físicamente la PS1 en el archivo, en contra de mi voluntad, mediante algún proceso externo?

Algo realmente extraño está sucediendo aquí despuéshabilitandoLinuxen mi Chromebook. No es un factor decisivo, pero es extremadamente extraño. ¿Por qué PS1siempre se establece esto?

\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\] \[\033[01;34m\]$\[\033[00m\]

¿Incluso cuando uso esto al final de .profile?

export PS1='\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\]$(__git_ps1 " >> %s") \[\033[01;34m\]$\[\033[00m\] '

Lo verdaderamente sorprendente es que dondequiera que lo ponga export PS1=, se ponecambiado físicamente en el archivoa la primera PS1entrada que mencioné anteriormente. Lo que significa que todas estas ubicaciones posibles obtienenrealmente alteradoy devuelto al quemado PS1mediante algún proceso externo:

  • ~/.profile
  • ~/.bashrc
  • /etc/profile.d/git.sh

¡Y más raro aún! Cuando creo un archivo llamado, ~/.promptpor ejemplo, y lo agrego para ejecutarlo en ~/.bashrco ~/.profile, con source ~/.promptluegoesoEl archivo también se sobrescribe.

Ya configuré export PROMPT_COMMAND=''los consejos que había visto, que no funcionaron, pero me llevaron a:

Sólo esto ha funcionado hasta ahora y quiero saber por qué:

function prompt_command {
    export PS1='\[\033[01;34m\]\u\[\033[00m\]@\[\033[01;32m\]\h\[\033[01;34m\] \w\[\033[31m\]$(__git_ps1 " >> %s") \[\033[01;34m\]$\[\033[00m\] '
}

export PROMPT_COMMAND=prompt_command

Respuesta1

Parece que has instalado gitlo que creo que es responsable de los cambios que ves cuando se agrega $(__git_ps1 " >> %s")en el medio de la cadena de tu PS1.

PROMPT_COMMAND funciona porque se ejecuta más tarde y repetidamente cada vez antes de que Bash muestre un mensaje, por lo que anula el cambio.

Debes asegurarte de configurar PS1 después de que git haya hecho su trabajo, pero no puedo decir dónde está.

Nota: ver esto respuesta de StackOverflow.

información relacionada