W definicji monitu terminala w .bashrcpliku mam między innymi ten fragment kodu:
${debian_chroot:+($debian_chroot)}
Co to robi i czy jest mi potrzebne?
W definicji monitu terminala w .bashrcpliku mam między innymi ten fragment kodu:
${debian_chroot:+($debian_chroot)}
Co to robi i czy jest mi potrzebne?
Odpowiedzi:
Ważną częścią odpowiedzi na to pytanie jest ten fragment z /etc/bash.bashrc:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Oznacza to, że jeśli zmienna $debian_chrootjest pusta, a plik /etc/debian_chrootistnieje i można go odczytać, zmienna jest ustawiona na zawartość pliku.
Po co to jest? Plik /etc/debian_chrootjest, gdy masz chrootowany system debian w innym systemie debian (ubuntu jest oparte na debianie). To jest dla lepszego przeglądu. Aby odróżnić, czy jesteś w chroot, czy nie.
Gdy masz chroot innego systemu, na przykład /srv/nfs4/netboot/, możesz ustawić nazwę tego chroota w /srv/nfs4/netboot/etc/debian_chroot(w moim przypadku jest to dysk netfoot nfs4 pxe):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
A potem, gdy chrootujesz w środku:
chroot /srv/nfs4/netboot/
Twój monit wygląda następująco:
(netboot)user@host:~#
Ogólnie ${var:+value}oznacza:
if $var is defined; then use 'value'; else do nothing
debian_chrootZmienna jest zdefiniowana w /etc/bash.bashrcpliku. Zajmuje zawartość /etc/debian_chrootpliku, jeśli plik ten istnieje i można go odczytać. Domyślnie ten plik nie istnieje.
Aby uzyskać więcej informacji, zobacz:
Teraz, aby lepiej zrozumieć, co dokładnie tam się dzieje, wykonaj następujące czynności w terminalu:
radu@Radu:~$PS1 = „$ {var: + ($ var)} \ u @ \ h: \ w \ $ ' radu @ Radu : ~ $ var = " test " ---- | ------------------ |
V.
( test ) radu @ Radu : ~ $ var = "" radu @ Radu : ~ $ var = "i tak dalej" ( i tak dalej ) radu @ Radu : ~ $
Jeśli zmienna środowiskowa $debian_chrootistnieje i nie jest pusta, ${debian_chroot:+($debian_chroot)}jest zastępowana przez ($debian_chroot)(to jest wartość $debian_chrootz otaczającymi ją parens).
$debian_chrootjest ustawiony /etc/bash.bashrcna zawartość, /etc/debian_chrootjeśli ten plik istnieje (domyślnie $debian_chrootnie istnieje) i nie ma jeszcze wartości.
${debian_chroot:+($debian_chroot)} jest zwykle używany, na przykład, do zdefiniowania twojego polecenia Bash
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Jak sama nazwa wskazuje, możesz użyć tej zmiennej, aby wskazać, w którym chroot jesteś, umieszczając go etc/debian_chrootw folderach głównych chroot.
Jeśli nie wiesz, co to jest chroot, nie potrzebujesz tego ;-) Ale nadal możesz nadużywać go, aby dołączyć inne informacje do monitu Bash
Domyślnie nic nie robi.
Jeśli nigdy nie musisz go używać debian_chroot, jest to przydatne miejsce, aby ustawić czas wyświetlania wiersza polecenia za pomocą:
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Wpisz to w swoim terminalu i obserwuj zmiany wiersza poleceń wraz z czasem:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Po jednokrotnym ustawieniu czasu, aby uzyskać bieżący zegar, który aktualizuje się co sekundę, użyj:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &