W definicji monitu terminala w .bashrc
pliku mam między innymi ten fragment kodu:
${debian_chroot:+($debian_chroot)}
Co to robi i czy jest mi potrzebne?
W definicji monitu terminala w .bashrc
pliku 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_chroot
jest pusta, a plik /etc/debian_chroot
istnieje i można go odczytać, zmienna jest ustawiona na zawartość pliku.
Po co to jest? Plik /etc/debian_chroot
jest, 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_chroot
Zmienna jest zdefiniowana w /etc/bash.bashrc
pliku. Zajmuje zawartość /etc/debian_chroot
pliku, 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_chroot
istnieje i nie jest pusta, ${debian_chroot:+($debian_chroot)}
jest zastępowana przez ($debian_chroot)
(to jest wartość $debian_chroot
z otaczającymi ją parens).
$debian_chroot
jest ustawiony /etc/bash.bashrc
na zawartość, /etc/debian_chroot
jeśli ten plik istnieje (domyślnie $debian_chroot
nie 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_chroot
w 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 &