Dans ma définition d'invite de terminal dans mon fichier .bashrc
, entre autres choses, j'ai cet extrait de code:
${debian_chroot:+($debian_chroot)}
Qu'est-ce que cela fait et j'en ai 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 que le fichier /etc/debian_chroot
existe et est lisible, la variable est définie sur le contenu du fichier.
Maintenant, à quoi ça sert? Le fichier /etc/debian_chroot
se trouve lorsque vous avez un système Debian chrooté dans un autre système Debian (Ubuntu est basé sur Debian). Donc, ceci est pour un meilleur aperçu. Pour distinguer si vous êtes dans le chroot ou pas.
Lorsque vous avez un chroot d'un autre système, par exemple dans /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 réseau nfs4 pxe):
user@Host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
Et puis quand vous chrootez dedans:
chroot /srv/nfs4/netboot/
Votre invite ressemble à ceci:
(netboot)user@Host:~#
${var:+value}
signifie généralement:
if $var is defined; then use 'value'; else do nothing
La variable debian_chroot
est définie dans le fichier /etc/bash.bashrc
. Il faut le contenu du fichier /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 là-bas, procédez comme suit dans le terminal:
radu@Radu:~$
PS1 = '$ {var: + ($ var)}\u @\h:\w\$'
radu @ Radu: ~ $ var = "test"
----
|
------------------
|
V
(test) radu @ Radu: ~ $ var = ""
radu @ Radu: ~ $ var = "et ainsi de suite"
(et ainsi de suite) radu @ Radu: ~ $
Si la variable d'environnement $debian_chroot
existe et n'est pas vide, ${debian_chroot:+($debian_chroot)}
est remplacée par ($debian_chroot)
(c'est-à-dire la valeur de $debian_chroot
avec des parenthèses autour d'elle).
$debian_chroot
est défini dans /etc/bash.bashrc
au contenu de /etc/debian_chroot
si ce fichier existe (ce n'est pas le cas par défaut) et si $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 son nom l'indique, vous pouvez utiliser cette variable pour indiquer le chroot dans lequel vous vous trouvez en plaçant etc/debian_chroot
dans vos dossiers racine.
Si vous ne savez pas ce qu'est un chroot, il est fort probable que vous n'en ayez pas besoin ;-) Mais vous pouvez toujours en abuser pour inclure d'autres informations dans votre invite Bash.
Par défaut, cela ne fait rien.