In meiner Terminal-Eingabeaufforderungsdefinition in meiner .bashrc
Datei habe ich unter anderem folgenden Codeausschnitt:
${debian_chroot:+($debian_chroot)}
Was macht das und brauche ich das?
Der wichtige Teil, um diese Frage zu beantworten, ist dieser Ausschnitt aus /etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Wenn die Variable $debian_chroot
leer und die Datei /etc/debian_chroot
vorhanden und lesbar ist, wird die Variable auf den Inhalt der Datei gesetzt.
Wofür ist das jetzt? Die Datei /etc/debian_chroot
ist, wenn Sie ein Chroot-Debian-System in einem anderen Debian-System haben (Ubuntu basiert auf Debian). Dies dient also der besseren Übersicht. Um zu unterscheiden, ob Sie in der Chroot sind oder nicht.
Wenn Sie beispielsweise eine Chroot eines anderen Systems haben /srv/nfs4/netboot/
, können Sie einen Namen für diese Chroot /srv/nfs4/netboot/etc/debian_chroot
festlegen (in meinem Fall ein nfs4 pxe-Netboot-Laufwerk):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
Und dann, wenn Sie drinnen chroot:
chroot /srv/nfs4/netboot/
Ihre Eingabeaufforderung sieht folgendermaßen aus:
(netboot)user@host:~#
Im Allgemeinen ${var:+value}
bedeutet:
if $var is defined; then use 'value'; else do nothing
Die debian_chroot
Variable wird in /etc/bash.bashrc
Datei definiert . Es nimmt den Inhalt der /etc/debian_chroot
Datei, wenn diese Datei existiert und lesbar ist. Standardmäßig existiert diese Datei nicht.
Weitere Einzelheiten finden Sie unter:
Um besser zu verstehen, was genau dort passiert, gehen Sie im Terminal wie folgt vor:
radu@Radu:~$
PS1 = '$ {var: + ($ var)} \ u @ \ h: \ w \ $'
radu @ Radu: ~ $ var = "test"='${var:+($var)}\u@\h:\w\$ '
:~$="test"
--------
||
------------------------------------
||
V
(test) radu @ Radu: ~ $test)radu@Radu:~$ var = ""
radu @ Radu: ~ $ var = "und so weiter"
(und so fort) radu @ Radu: ~ $=""
:~$="and so on"
and so on)radu@Radu:~$
Wenn die Umgebungsvariable $debian_chroot
existiert und nicht leer ${debian_chroot:+($debian_chroot)}
ist, wird sie durch ersetzt ($debian_chroot)
(das ist der Wert von $debian_chroot
with parens).
$debian_chroot
wird /etc/bash.bashrc
auf den Inhalt gesetzt, /etc/debian_chroot
wenn diese Datei existiert (standardmäßig nicht) und $debian_chroot
noch keinen Wert hat.
${debian_chroot:+($debian_chroot)}
wird normalerweise zum Definieren der Bash-Eingabeaufforderung verwendet
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Wie der Name schon sagt, können Sie diese Variable verwenden, um anzugeben, in welcher Chroot Sie sich befinden, indem Sie sie etc/debian_chroot
in Ihren Chroot-Stammordnern ablegen.
Wenn Sie nicht wissen, was eine Chroot ist, brauchen Sie das wahrscheinlich nicht ;-) Aber Sie können es trotzdem missbrauchen, um andere Informationen in Ihre Bash-Eingabeaufforderung aufzunehmen
Standardmäßig macht es nichts.
Wenn Sie diese Option nie benötigen, können debian_chroot
Sie die Uhrzeit, zu der die Eingabeaufforderung angezeigt wurde, folgendermaßen eingeben:
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Geben Sie dies in Ihr Terminal ein und beobachten Sie, wie sich Ihre Eingabeaufforderung mit der Zeit ändert:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Nachdem die Zeit einmal eingestellt wurde, um eine laufende Uhr zu erhalten, die jede Sekunde aktualisiert, verwenden Sie:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &