У моєму .bashrc
файлі підказки підказки , серед іншого, у мене є цей фрагмент коду:
${debian_chroot:+($debian_chroot)}
Що це робить, і чи потрібно це мені?
У моєму .bashrc
файлі підказки підказки , серед іншого, у мене є цей фрагмент коду:
${debian_chroot:+($debian_chroot)}
Що це робить, і чи потрібно це мені?
Відповіді:
Важливою частиною відповіді на це питання є цей фрагмент від /etc/bash.bashrc
:
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
Це означає, що якщо змінна $debian_chroot
порожня, а файл /etc/debian_chroot
існує і читабельна, змінна встановлюється у вміст файлу.
Тепер для чого це? Цей файл /etc/debian_chroot
- це якщо у вас система з хронізованою системою debian всередині іншої системи debian (ubuntu заснована на debian). Тож це для кращого огляду. Щоб розрізнити, чи є ви в хроту чи ні.
Якщо у вас є chroot іншої системи, наприклад у, /srv/nfs4/netboot/
ви можете встановити ім'я цього chroot в /srv/nfs4/netboot/etc/debian_chroot
(у моєму випадку це nfs4 pxe netboot drive):
user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot
І тоді, коли ти хротуєшся всередині:
chroot /srv/nfs4/netboot/
Ваше підказка виглядає так:
(netboot)user@host:~#
Як правило, ${var:+value}
означає:
if $var is defined; then use 'value'; else do nothing
debian_chroot
Мінлива визначена в /etc/bash.bashrc
файлі. Він приймає вміст /etc/debian_chroot
файлу, якщо цей файл існує і читабельний. За замовчуванням цей файл не існує.
Докладніше див:
Тепер, щоб краще зрозуміти, що саме там відбувається, зробіть наступне в терміналі:
radu@Radu:~$
PS1 = '$ {var: + ($ var)} \ u @ \ h: \ w \ $'
radu @ Radu: ~ $ var = "тест"='${var:+($var)}\u@\h:\w\$ '
:~$="test"
--------
||
------------------------------------
||
V
(тест) radu @ Radu: ~ $test)radu@Radu:~$ var = ""
radu @ Radu: ~ $ var = "і т. д."
(і так далі) radu @ Radu: ~ $=""
:~$="and so on"
and so on)radu@Radu:~$
Якщо змінна середовища $debian_chroot
існує, а вона не порожня, ${debian_chroot:+($debian_chroot)}
її замінюють на ($debian_chroot)
(тобто значення $debian_chroot
з паролями навколо неї).
$debian_chroot
встановлюється у /etc/bash.bashrc
вміст, /etc/debian_chroot
якщо цей файл існує (він за замовчуванням $debian_chroot
не має ) і ще не має значення.
${debian_chroot:+($debian_chroot)}
зазвичай використовується для визначення, наприклад, вашого запиту Bash
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Як випливає з назви, ви можете використовувати цю змінну, щоб вказати, в якому хроні ви знаходитесь, розмістивши etc/debian_chroot
у своїх кореневих папках chroot.
Якщо ви не знаєте, що таке "chroot" - це вам не потрібно ;-) Але ви все одно можете зловживати ним, щоб включити якусь іншу інформацію у своє запит Bash.
За замовчуванням він нічого не робить.
Якщо вам ніколи не потрібно користуватися, debian_chroot
то це зручне місце, щоб викласти час відображення командного рядка, використовуючи:
export PROMPT_COMMAND='debian_chroot=$(date +%r)'
Введіть це у свій термінал і спостерігайте за тим, як змінюється командна строка з часом:
rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'
(09:14:59 PM)rick@alien:~$
Після встановлення часу один раз, щоб отримати годинник, що працює, який оновлює кожне друге використання:
while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &