Dans ma définition de l'invite du terminal, dans mon .bashrc
parmi d'autres choses, j'ai ce bout de code :
${debian_chroot:+($debian_chroot)}
À quoi cela sert-il, et en ai-je besoin ?
Dans ma définition de l'invite du terminal, dans mon .bashrc
parmi d'autres choses, j'ai ce bout de code :
${debian_chroot:+($debian_chroot)}
À quoi cela sert-il, et en ai-je besoin ?
La partie importante pour répondre à cette question est cet extrait de /etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Cela signifie que si la variable $debian_chroot
est vide et le fichier /etc/debian_chroot
existe et est lisible, la variable est définie comme le contenu du fichier.
C'est pour quoi faire ? Le dossier /etc/debian_chroot
c'est lorsque vous avez un système debian chrooté à l'intérieur d'un autre système debian (ubuntu est basé sur debian). C'est donc pour avoir une meilleure vue d'ensemble. Pour distinguer si vous êtes dans le chroot ou non.
Lorsque vous disposez d'un chroot d'un autre système, par exemple en /srv/nfs4/netboot/
vous pouvez définir un nom pour ce chroot dans /srv/nfs4/netboot/etc/debian_chroot
(dans mon cas, il s'agit d'un lecteur de démarrage net pxe nfs4) :
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
Et ensuite, quand vous chrootez à l'intérieur :
chroot /srv/nfs4/netboot/
Votre message ressemble à ceci :
(netboot)user@host:~#
En général, ${var:+value}
signifie :
if $var is defined and not null; then use 'value'; else do nothing
El debian_chroot
est définie dans /etc/bash.bashrc
fichier. Il prend le contenu de /etc/debian_chroot
si ce fichier existe et est lisible. Par défaut, ce fichier n'existe pas.
Pour plus de détails, voir :
Maintenant, pour mieux comprendre ce qui se passe exactement ici, faites ce qui suit dans le terminal :
radu@Radu:~$
Si la variable d'environnement $debian_chroot
existe et n'est pas vide ${debian_chroot:+($debian_chroot)}
est remplacé par ($debian_chroot)
(c'est-à-dire la valeur de $debian_chroot
avec des parenthèses autour).
$debian_chroot
est fixé dans /etc/bash.bashrc
au contenu de /etc/debian_chroot
si ce fichier existe (il n'existe pas par défaut) et $debian_chroot
n'a pas encore de valeur.
${debian_chroot:+($debian_chroot)}
est généralement utilisé pour définir votre invite Bash, par exemple
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Comme le nom le suggère, vous pouvez utiliser cette variable pour indiquer dans quel chroot vous vous trouvez en plaçant etc/debian_chroot
dans les dossiers de la racine de votre chroot.
Si vous ne savez pas ce qu'est un chroot, il est fort probable que vous n'en ayez pas besoin ;-) Mais vous pouvez quand même en abuser pour inclure d'autres informations dans votre invite Bash
Par défaut, il ne fait rien.
Si vous n'avez jamais besoin d'utiliser debian_chroot
alors c'est un endroit pratique pour mettre l'heure à laquelle l'invite de commande a été affichée en utilisant :
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Tapez ceci dans votre terminal et regardez votre invite de commande changer avec le temps :
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Après avoir réglé l'heure une fois, pour obtenir une horloge en marche qui se met à jour toutes les deux utilisations :
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.