Configuraciones de Bash PS1: cómo recuperar la carpeta actual como título de la terminal

Recientemente agregué estas líneas a mi file ~ / .bashrc para mostrar la twig actual si estoy en una carpeta de trabajo git, y funciona muy bien para eso. Sin embargo, lo que he perdido es que el nombre de la carpeta actual solía mostrarse en la pestaña del terminal que tengo abierto, y ahora no: siempre dice 'Terminal'. ¿Puedo recuperarlo y aún mantener las cosas idiotas? Aquí están las líneas en cuestión: es el segundo problema, ya que comentar solo la segunda línea soluciona el problema.

source /etc/bash_completion.d/git PS1='\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ ' 

He estado buscando explicaciones sobre las opciones para PS1 pero no puedo ver nada sobre el título de la window del terminal allí. ¿Alguien puede aconsejar? gracias, max

EDITAR

Realmente manipulo PS1 ya para tener una terminal con el formatting

<rvm version and gemset> <computer name> <current folder> <git branch>

, con cada parte en un color diferente, pero nunca he visto los documentos antes, así que gracias por el enlace a eso. Mi configuration actual de PS1 es

 \[\033[0;31m\]$(__my_rvm_ruby_version)\[\033[0;33m\]\h\[\033[0;37m\]:\[\033[1;33m\]\W\[\033[1;32m\]$(__git_branch)\[\033[1;32m\]$(__git_dirty) \[\033[0;37m\]$ 

Presumiblemente puedo hacer algo como

 export "<something> $PS1" 

para establecer el nombre de mi pestaña de terminal sin perder mi configuration existente. Sin embargo, he estado dando vueltas con esto y no he podido hacerlo.

EDITAR – descubrió esto con la ayuda de algunas de las respuestas a continuación – ¡gracias a todos! Lo envolví en un script de shell

 #!/usr/bin/env bash #renames the current terminal tab via the PS1 env var source ~/.bashrc export PS1="$PS1""\[\e]0;$1 \a\]" 

se llama "renametab", así que ahora puedo llamarlo, por ejemplo

 source renametab mytabname 

Se necesita "fuente" para exportar los cambios al shell actual: si acabo de renametab mytabname la export solo entra en una subshell que se renametab mytabname cuando termina el script.

Gracias de nuevo a todos, por la ayuda!

Eso es lo que tengo como pnetworkingeterminado en mi Ubuntu con respecto al título de la terminal:

 PS1='\[\e]0;\u@\h: \w\a\]' 

Prefiera su PS1 con este y debería estar bien

Puedes probar:

 PS1="$PS1"'\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ ' 

Pero ayudaría saber qué PS1 se está configurando anteriormente en ~/.bashrc o en /etc/bash.bashrc .

Si tiene suerte, su terminal es compatible con Xterm, y puede usar las secuencias ANSI para establecer el título de su terminal.

En lugar de darle la secuencia, le indicaré la documentation . Ahora, puedes colorear tu post. La secuencia que necesita se describe como xterm title hack, que es lo que es.

También puede utilizar las secuencias de control en el aviso para ayudar a configurar PS1 . Estos se pueden encontrar en la página de manual de BASH bajo PROMPTING .

Y esto es lo que tengo en mi .bashrc :

 PS1="\e]0;BASH: \u@\h\aBASH \v: \u@\h:\w\n\$ " 
  • \e]0;BASH: \u@\h\a – Establecer el título de la window
    • \e] – Enviar el carácter ESC seguido por el corchete izquierdo cerrado. Este es el comienzo de una secuencia de command ANSI.
    • 0; – Cero seguido de un punto y coma. La siguiente cadena establece el título
    • BASH: \u@\h\ – Mi título de window
      • \u – Nombre de usuario
      • @ – El signo @
      • \h – Nombre de host
    • \a – La BEL (Cnrl-G) que termina mi título
  • BASH \v: \u@\h:\w\n\$ – Establece mi aviso
    • BASH \v: – La cadena BASH seguida de la versión. Mi shell pnetworkingeterminado es Ksh, así que cuando estoy usando el shell BASH, quiero ver la palabra BASH en mi post
    • \u – El nombre de usuario
    • \h – El nombre de host
    • \w – El directory de trabajo actual (basado en HOME)
    • \n – Nueva línea – Mi post es de dos líneas. De esta forma, los directorys largos no ocupan espacio en la línea de command.
    • \$ – Signo de dólar o # si tiene privilegios de administrador.

Juega y diviértete. Prueba las diferentes secuencias de escape. Agrega color Incrustar las cosas GIT. Explorar.

Recuerde, es solo una computadora. Lo peor que puede hacer es provocar que todo el sistema se derrumbe y elimine todo su trabajo valioso, pierda su trabajo y se convierta en un paria sin esperanza cuyo único medio de ingresos será preguntar a los clientes si quieren papas fritas con eso. A less que trabajes en un banco. Entonces también puedes derrumbar toda la economía global.

Otra forma de hacerlo es usar PROMPT_COMMAND y dejar que PS1 sea el prompt. Por ejemplo:

PROMPT_COMMAND = 'echo -ne "\ 033] 0; $ {USER} @ $ {HOSTNAME %%. *}: $ {PWD / # $ HOME / ~}"; echo -ne "\ 007" '

Yo uso esto:

 PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/~} - ${USER}@${HOSTNAME}\007"' 

que da como resultado un título de window como este:

 /home/tkirk - tkirk@hostname 

Para los verdaderamente indefensos (como yo). Aquí está mi Bash RC que incluye el nombre de la twig git en el prompt y establece el título de la window. Tenga en count que usa PROMPT_COMMAND para __git_ps1, que establece PS1 internamente. Al usar __git_ps1 de esta manera, toma 2 arguments. El primer argumento es la cadena antes del nombre de la twig, el segundo argumento es la cadena después del nombre de la twig.

 # # ~/.bashrc # # If not running interactively, don't do anything [[ $- != *i* ]] && return source ~/git/contrib/completion/git-prompt.sh alias ls='ls --color=auto' alias cd..='cd ..' c_reset='\[\e[0m\]' c_prompt='\[\e[1;31m\]' c_path='\[\e[0;33m\]' if [ -f ~/git/contrib/completion/git-prompt.sh ]; then . ~/git/contrib/completion/git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=true GIT_PS1_SHOWCOLORHINTS=true GIT_PS1_UNTRACKEDFILES=true # Below, The section "\[\e]0;\w\a\]" sets the window title PROMPT_COMMAND="__git_ps1 '${c_path}\w${c_reset}' '\n\u@\t${c_prompt}-->${c_reset}\[\e]0;\w\a\]' " fi #PS1 is set by the __git_ps1 script above, so comment out below #PS1='\w\n[\u@\t]$>'