Comment définir automatiquement le titre du terminal sur le nom du répertoire sans chemin

11

Actuellement, le titre de mon terminal / tab bash est défini en fonction du répertoire dans lequel je me trouve. Par exemple:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

Ce n'est pas très utile si j'ai plusieurs onglets ouverts côte à côte. Par exemple, si j'ai 4 onglets du répertoire ci-dessus ouverts côte à côte, tout ce que je vois est

bob@bobscomputer:~/i/had...

4 fois.

J'aimerais que tous mes titres de terminal soient automatiquement définis sur la dernière partie du chemin d'accès. Dans l'exemple ci-dessus, j'aimerais que le titre soit

yesterday

Évidemment, le titre devrait changer quand je change de répertoire. Je voudrais faire cela sans changer mon invite, donc l'invite et le titre du terminal devraient être différents.

Y a-t-il un moyen de faire cela?

Grenouille qui regarde
la source
Pour ZSH, regardez ici: superuser.com/a/1328085/122021
LAFK dit Reinstate Monica

Réponses:

11

Pourquoi voulez-vous le faire sans modifier votre variable PS1? C'est la bonne façon de procéder.

Si vous exécutez ce qui suit, vous obtiendrez ce que vous voulez:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

Cela prend simplement l'invite par défaut:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

... et en remplaçant \u@\h: \wpar \W.

Vous pouvez faire la même chose avec n'importe quelle commande qui fait écho au bon code d'échappement:

echo -en "\e]0;${PWD##*/}\a"

... mais alors vous vous battriez constamment contre bash pour l'empêcher de le faire en utilisant PS1 (la meilleure façon).

Steven K
la source
2
Merci - je n'avais pas réalisé que PS1 définissait le titre et l'invite indépendamment. Dans mon .bashrc, sous le cas "$ TERM" dans xterm * | rxvt *), j'ai défini PS1 = "[\ e] 0; $ {debian_chroot: + ($ debian_chroot)} \ W \ a] $ PS1", et il fait exactement ce que je voulais.
Staring Frog
Cette question explique bien ce que signifie tout ce que le charabia PS1 signifie: askubuntu.com/questions/404341/…
congusbongus
3

Oui. Prepend: \[\e]0;\W\a\]sur votre PS1. Cela ne changera pas l'apparence de vos invites, mais définira automatiquement le titre de vos onglets de terminal sur le nom de base du répertoire de travail actuel.

LikeTheRock
la source