Terminal istemimde “$ {debian_chroot: + ($ debian_chroot)}” terminalimde ne yapar?


87

Dosyamdaki terminal komut tanımımda .bashrc, diğer şeylerin yanı sıra, bu kod snippet'ine sahibim:

${debian_chroot:+($debian_chroot)}

Bu ne işe yarıyor ve buna ihtiyacım var mı?

Yanıtlar:


83

Bu soruyu cevaplamanın önemli kısmı, bu kod parçacığından /etc/bash.bashrc:

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

Değişkenin $debian_chrootboş olması ve dosyanın /etc/debian_chrootvar olması ve okunabilir olması durumunda, değişken dosyanın içeriğine ayarlanır.

Şimdi bu ne için? Dosya /etc/debian_chrootbaşka bir debian sistemi içinde chrooted debian sisteminiz olduğunda (ubuntu debian'a dayanmaktadır). Yani bu daha iyi bir genel bakış için. Chroot içinde olup olmadığını ayırt etmek için.

Örneğin, başka bir sisteme ait bir chroot'unuz /srv/nfs4/netboot/varsa, bu chroot için bir ad belirleyebilirsiniz /srv/nfs4/netboot/etc/debian_chroot(benim durumumda bu bir nfs4 pxe netboot sürücüsüdür):

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

Ve sonra içeri girerken:

chroot /srv/nfs4/netboot/

Sorunuz şöyle görünüyor:

(netboot)user@host:~#

55

Genel olarak şu ${var:+value}anlama gelir:

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

debian_chrootDeğişken tanımlanan /etc/bash.bashrcdosyanın. /etc/debian_chrootBu dosya varsa ve okunabiliyorsa dosyanın içeriğini alır . Varsayılan olarak bu dosya mevcut değil.

Daha fazla detay için bakınız:

Şimdi, orada tam olarak ne olduğunu daha iyi anlamak için terminalde aşağıdakileri yapın:

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

                  
                   
  
  
  V
( test ) radu @ Radu : ~ $ var = "" radu @ Radu : ~ $ var = "ve diğerleri" ( ve benzeri ) radu @ Radu : ~ $


19

Ortam değişkeni $debian_chrootvarsa ve boş değilse ${debian_chroot:+($debian_chroot)}, ($debian_chroot)( $debian_chrootetrafındaki parenslerin değeri budur ) ile değiştirilir.

$debian_chrootBu dosyanın var /etc/bash.bashrcolup /etc/debian_chrootolmadığının içeriğine ayarlanmıştır (varsayılan olarak yoktur) ve $debian_chroothenüz bir değeri yoktur.

${debian_chroot:+($debian_chroot)} Örneğin, Bash komut isteminizi tanımlamak için kullanılır.

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

Adından da anlaşılacağı gibi, etc/debian_chrootchroot kök klasörlerinize yerleştirerek hangi chroot'ta bulunduğunuzu belirtmek için bu değişkeni kullanabilirsiniz .

Eğer bir chroot'un şansının ne olduğunu bilmiyorsanız buna ihtiyacınız yok ;-) Ama yine de Bash'inizin istemine başka bilgiler eklemek için kötüye kullanabilirsiniz.

Varsayılan olarak hiçbir şey yapmaz.


0

debian_chrootKullanmaya hiç gerek duymazsanız, komut istemini kullanarak görüntülenen zamanı koymak için kullanışlı bir yer:

export PROMPT_COMMAND='debian_chroot=$(date +%r)'

Bunu terminalinize yazın ve zamanla komut istemi değişikliklerinizi izleyin:

rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'

(09:14:59 PM)rick@alien:~$ 

Süre bir kez ayarlandıktan sonra, her saniye kullanımda bir güncellenen çalışan bir saat elde etmek için:

while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.