“ $ {debian_chroot: + ($ debian_chroot)}” ทำอะไรในหน้าจอพร้อมท์เทอร์มินัลของฉัน


86

ในการกำหนดพรอมต์เทอร์มินัลของฉันใน.bashrcไฟล์ของฉันฉันมีโค้ดบางส่วน:

${debian_chroot:+($debian_chroot)}

สิ่งนี้ทำอะไรและฉันต้องการมันหรือไม่

คำตอบ:


83

ส่วนสำคัญที่จะตอบคำถามนี้คือตัวอย่างนี้จาก/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คือเมื่อคุณมีระบบเดเบียน chrooted ภายในระบบเดเบียนอื่น (อูบุนตูจะขึ้นอยู่กับเดเบียน) ดังนั้นนี่คือภาพรวมที่ดีขึ้น เพื่อแยกความแตกต่างไม่ว่าคุณจะอยู่ใน chroot หรือไม่

เมื่อคุณมี chroot ของระบบอื่นเช่น/srv/nfs4/netboot/คุณสามารถตั้งชื่อ chroot นี้ได้/srv/nfs4/netboot/etc/debian_chroot(ในกรณีของฉันมันเป็นไดรฟ์ nfs4 pxe netboot):

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

และเมื่อคุณ chroot ภายใน:

chroot /srv/nfs4/netboot/

ข้อความแจ้งของคุณมีลักษณะดังนี้:

(netboot)user@host:~#

54

โดยทั่วไป${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:~$

19

หากตัวแปรสภาพแวดล้อม$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 prompt ของคุณตัวอย่างเช่น

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

ตามชื่อแนะนำคุณสามารถใช้ตัวแปรนี้เพื่อระบุว่าคุณอยู่ใน chroot ใดโดยการใส่etc/debian_chrootลงในโฟลเดอร์ root ของ chroot

หากคุณไม่ทราบว่าโอกาสคืออะไรคุณไม่จำเป็นต้องใช้ ;-) แต่คุณยังอาจใช้ข้อมูลนี้เพื่อใส่ข้อมูลอื่นใน Bash prompt ของคุณ

โดยค่าเริ่มต้นมันไม่ได้ทำอะไรเลย


0

หากคุณไม่จำเป็นต้องใช้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 &
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.