ในการกำหนดพรอมต์เทอร์มินัลของฉันใน.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
คือเมื่อคุณมีระบบเดเบียน 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:~#
โดยทั่วไป${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 prompt ของคุณตัวอย่างเช่น
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
ตามชื่อแนะนำคุณสามารถใช้ตัวแปรนี้เพื่อระบุว่าคุณอยู่ใน chroot ใดโดยการใส่etc/debian_chroot
ลงในโฟลเดอร์ root ของ chroot
หากคุณไม่ทราบว่าโอกาสคืออะไรคุณไม่จำเป็นต้องใช้ ;-) แต่คุณยังอาจใช้ข้อมูลนี้เพื่อใส่ข้อมูลอื่นใน Bash prompt ของคุณ
โดยค่าเริ่มต้นมันไม่ได้ทำอะไรเลย
หากคุณไม่จำเป็นต้องใช้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 &