Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

lundi 11 mai 2015

Un Terminal Linux avec un titre plus lisible

Par défaut sous Linux, le titre des terminaux a l'aspect suivant:

Default-Terminal.png

On a d'abord le nom de la machine précédé de l'utilisateur et ensuite le chemin complet dans lequel on se trouve.

Or l'information intéressante ici est bien le chemin et non le nom de la machine. Comme on peut le voir sur l'image suivante, si l'on a plusieurs terminaux d'ouverts on ne pourra pas les distinguer les uns des autres puisque dans la barre des tâches tout ce que je vois c'est debian@debian-testing à chaque fois.

Terminal-Detail.png

Le titre du terminal sous Linux, tout comme l'aspect du prompt, se configure avec la variable PS1 du shell, plus précisément de bash.

Cette variable est configurée dans le fichier .bashrc. La portion de code qui nous intéresse est la suivante:

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

On voit le \u@\h qui affiche debian@debian-testing et \w qui affiche le répertoire courant.

Pour rendre le titre de notre terminal plus lisible, on peut par exemple afficher le répertoire courant en premier et restreindre celui-ci au seul nom du dernier niveau, ce qui donne:

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\W on \u@\h\a\]$PS1"

On utilise \W au lieu de \w pour ne pas avoir le chemin complet.

On voit maintenant que le deuxième terminal a un titre plus lisible et le retrouver dans la barre des tâches sera plus facile.

Terminal-Detail2.png

Pour personnaliser encore d'avantage le titre du terminal ou l'aspect du prompt sous Linux, on pourra consulter la documentation de bash ou aller sur le site bashrcgenerator qui permet de tester et simuler les modifications faites à la variable PS1.

samedi 8 mars 2014

Quels scripts d'initialisation utiliser sous Debian: .bash_profile ou .bashrc ?

Quand on définit des alias ou qu'on modifie le PATH sous Linux, la question de savoir dans quels scripts d'initialisation du Shell on le fait se pose souvent.

Faut t-il définir les alias dans le fichier .bash_profile de l'utilisateur ou dans le fichier .bashrc ?

Avant de répondre à cette question, il faut savoir qu'il y a deux types de Shell: les Shell de connexion (ou de login) et les autres.

Le Shell de connexion est celui qui est invoqué lorsqu'on se connecte sur la console:

  • lors de la connexion physique à une machine dépourvue d'environnement graphique,
  • ou en utilisant les raccourcis Ctrl-Alt F1, Ctrl-Alt F2 ...,
  • ou lors d'une connexion à une machine distante via ssh

et aussi si on utilise la commande bash --login.

Tous les autres Shells lançés par un Shell de connexion n'en sont donc pas. Les Anglais parlent de "non-login Shell".

Donc pour revenir aux scripts d'initialisation du Shell du répertoire courant de l'utilisateur:

  • .bash_profile est le script d'initialisation des Shells de login,
  • .bashrc est le script d'initialisation des autres Shell,

Selon l'usage des alias que l'on veut faire, on les définira dans un fichier ou dans un autre.

Mais un alias définit dans .bash_profile ne sera pas visible par un Shell lancé depuis l'environnement graphique puisque le Shell utilisé dans ce cas n'est pas un Shell de login.

Par contre sous Debian les définitions d'alias faites dans .bashrc seront utilisables non seulement dans un "non-login Shell" puisqu'ils sont définis dans le script d'initialisation de ceux-cis mais aussi par les Shells de login puisque sous Debian généralement .bashrc est appelé par .bash_profile comme suit:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

Par conséquent, la façon la plus simple de définir des alias, le PATH ou de faire d'autres réglages sous Debian consiste à le faire dans le fichier .bashrc. Sur d'autres distributions Linux, cela reste évidemment vrai tant que l'on source .bashrc depuis .bash_profile.

Enfin, il faut savoir que si le fichier .bash_profile n'existe pas alors c'est le fichier .profile qui sera recherché.

page 2 de 2 -