No me gusta que todas las rutas de directorio largas ocupen el espacio de mi terminal, así que las trunco mediante un script de Python. Edité el archivo .bashrc y reemplacé PS1 por
export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.
Y cuando hago el título de esa terminal ya no funciona. Simplemente muestra Terminal
Lo que es irritante. Puedo cambiar el título manualmente ejecutando el siguiente comando en bash:
PROMPT_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'
¿Hay alguna manera de configurar el título del terminal en el mensaje personalizado que se está configurando en mi bash?
Respuesta1
Para gnome-terminal, el título del terminal se establece a través PROMPT_COMMAND
del cual se define en /etc/profile.d/vte-2.91.sh
.
PROMPT_COMMAND
, tal como se define en este script, hace dos cosas:
cambia el título del terminal usando la secuencia de escape OSC 0 (
\033]0;NEW_TITLE\007
),cambia la noción del terminal del directorio actual usando la secuencia de escape OSC 7 (
\033]7;NEW_CURRENT_DIRECTORY\007
, esto se factoriza en la__vte_osc7
función).
Si eliminas el segundo de tu PROMPT_COMMAND
, las ventanas o pestañas de tu terminal recién abiertas no se abrirán en el directorio donde estabas en el terminal anterior. Lo más probable es que no quieras esto.
Entonces, en los scripts de inicio de su shell, después de obtener el origen, vte-2.91.sh
debe crear su preferido PROMPT_COMMAND
que establezca el título de manera similar a vte-2.91.sh
y establezca el directorio de trabajo actual exactamente como se hace de forma predeterminada.
No conozco ninguna forma de hacer referencia al PS1
valor resuelto de (es decir, después de sustituir el nombre de usuario y demás) dentro PROMPT_COMMAND
o en cualquier otro lugar (y mucho menos filtrar las secuencias de escape, como los cambios de color). Si desea ver la misma cadena en su mensaje y en el título de la ventana, creo que necesita duplicar la construcción de esa cadena para PS1
y PROMPT_COMMAND
.
Respuesta2
Esto funcionará para ti
abierto ~/.bashrc
. Encuentra la línea que dice:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Comente esta línea poniendo un #
carácter delante:
# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Ahora agregue esta línea (es posible que desee colocarla justo después de la línea comentada):
PROMPT_COMMAND='echo -ne "\033]0;Custom Name\007"'
ReemplazarCustom Name
con lo que quieras cambiar el título de la Terminal.
Espero que esto ayude.
Respuesta3
La secuencia de escape a utilizar esESC]2;nuevo títuloBELdóndeESCyBELson los personajes de escape y campana. Como \[\e]2;NEWTITLE\a\]
. Usando secuencias de escape #Bash, cambiar el título en su mensaje se ve así:
export PS1='\[\e]2;new title\a\]prompt > '
referencia del documento
Entonces, un ejemplo de un mensaje bash truncado multicolor que también tiene un título de terminal personalizado es:
export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'
En ese ejemplo, el título de la terminal siempre reflejará el directorio de trabajo actual ( $PWD
) y el mensaje de la terminal siempre tendrá el siguiente aspecto, independientemente del directorio en el que se encuentre: user@hostname $
.
Puede reemplazar $PWD
con CUSTOM TITLE
para que el título del terminal siempre refleje CUSTOM TITLE
.
Actualizar
Tenga cuidado al no incluir caracteres no impresos en \[
y \]
. Funciona sin él y llevo años haciéndolo sin ellos. Sin embargo, como descubrí hoy con algunas configuraciones,puede causar algunos problemasen la terminal. A continuación se muestra una versión más limpia que utiliza variables y ajusta los códigos de color:
T_YELLOW='\[\e[93m\]'
T_WHITE='\[\e[97m\]'
T_GRAY='\[\e[90m\]'
T_DEFAULT='\[\e[0m\]'
T_TITLE='\[\e]2;$PWD\a\]'
export PS1="${T_TITLE}${T_YELLOW}$USER${T_WHITE}@${T_GRAY}$HOSTNAME${T_YELLOW} $ ${T_DEFAULT}"