Pertanyaan Apa artinya "$ {debian_chroot: + ($ debian_chroot)}" lakukan di terminal prompt saya?


Dalam definisi prompt terminal saya di saya .bashrc file, antara lain, saya memiliki potongan kode ini:

${debian_chroot:+($debian_chroot)}

Apa yang ini lakukan, dan apakah saya membutuhkannya?


64
2017-11-08 06:03


asal




Jawaban:


Bagian penting untuk menjawab pertanyaan ini adalah cuplikan ini /etc/bash.bashrc:

if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

Artinya jika variabel $debian_chroot kosong dan file /etc/debian_chroot ada dan dapat dibaca variabel diatur ke isi file.

Sekarang untuk apa ini? Berkas /etc/debian_chroot adalah ketika Anda memiliki sistem debian chroot di dalam sistem debian lain (ubuntu didasarkan pada debian). Jadi ini untuk gambaran yang lebih baik. Untuk membedakan apakah Anda berada di chroot atau tidak.

Ketika Anda memiliki chroot dari sistem lain misalnya di /srv/nfs4/netboot/ Anda dapat mengatur nama untuk chroot ini di /srv/nfs4/netboot/etc/debian_chroot (dalam kasus saya itu adalah nfs4 pxe netboot drive):

user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot

Dan kemudian ketika Anda chroot di dalam:

chroot /srv/nfs4/netboot/

Prompt Anda terlihat seperti ini:

(netboot)user@host:~#

67
2017-11-08 07:15





Umumnya, ${var:+value} cara:

if $var is defined; then use 'value'; else do nothing

Itu debian_chroot variabel didefinisikan dalam /etc/bash.bashrc mengajukan. Itu mengambil isi /etc/debian_chroot file jika file ini ada dan dapat dibaca. Secara default file ini tidak ada.

Untuk detail lebih lanjut, lihat:

Sekarang, untuk memahami lebih baik apa sebenarnya yang terjadi di sana, lakukan hal berikut di terminal:

radu @ Radu: ~ $ PS1 = '$ {var: + ($ var)} \ u @ \ h: \ w \ $'
radu @ Radu: ~ $ var = "test"
                  ----
                   |
  ------------------
  |
  V
(tes) radu @ Radu: ~ $ var = ""
radu @ Radu: ~ $ var = "dan seterusnya"
(dan seterusnya) radu @ Radu: ~ $

37
2017-11-08 07:49





Jika variabel lingkungan $debian_chroot ada dan tidak kosong ${debian_chroot:+($debian_chroot)} diganti dengan ($debian_chroot) (Itu adalah nilai dari $debian_chroot dengan orang tua di sekitarnya).

$debian_chroot diatur /etc/bash.bashrc untuk isi /etc/debian_chroot jika file itu ada (tidak secara default) dan $debian_chroot belum memiliki nilai.

${debian_chroot:+($debian_chroot)} biasanya digunakan untuk derfine prompt Bash Anda, misalnya

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Seperti namanya, Anda dapat menggunakan variabel ini untuk menunjukkan chroot mana Anda berada dengan menempatkan etc/debian_chroot ke dalam folder akar chroot Anda.

Jika Anda tidak tahu apa chroot adalah kemungkinan yang Anda tidak membutuhkan itu ;-) Tapi Anda masih mungkin menyalahgunakannya untuk memasukkan beberapa informasi lain ke dalam prompt Bash Anda

Secara default tidak melakukan apa-apa.


14
2017-11-08 07:12