मेरे टर्मिनल प्रॉम्प्ट में "$ {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तब होती है जब आपके पास किसी अन्य डेबियन सिस्टम के अंदर एक क्रोकेटेड डेबियन सिस्टम होता है (ubuntu डेबियन पर आधारित होता है)। तो यह एक बेहतर अवलोकन के लिए है। यह जानने के लिए कि आप चुरोट में हैं या नहीं।

जब आपके पास उदाहरण के लिए किसी अन्य सिस्टम का एक क्रोकेट है , /srv/nfs4/netboot/तो आप इस chroot के लिए एक नाम सेट कर सकते हैं /srv/nfs4/netboot/etc/debian_chroot(मेरे मामले में यह एक nfs4 pxe netboot ड्राइव है):

user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_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 = "test" ---- | ------------------ |

                  
                   
  
  
  वी
( परीक्षण ) राडू @ राडु : ~ $ var = "" राडू @ राडु : ~ $ var = "और इसी तरह" ( और इसी तरह ) राडू @ राडु : ~ $


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)} उदाहरण के लिए आमतौर पर आपके बैश प्रॉम्प्ट को परिभाषित करने के लिए उपयोग किया जाता है

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

जैसा कि नाम से पता चलता है कि आप इस चर का उपयोग यह इंगित करने के लिए कर सकते हैं कि आप etc/debian_chrootअपने चिरोट रूट फ़ोल्डरों में किस क्रोशिया में हैं ।

यदि आप नहीं जानते कि चेरोट क्या है तो संभावना है कि आपको इसकी आवश्यकता नहीं है;; लेकिन फिर भी आप इसे किसी अन्य जानकारी को अपने बैश प्रॉम्प्ट में शामिल करने के लिए दुरुपयोग कर सकते हैं।

डिफ़ॉल्ट रूप से यह कुछ भी नहीं करता है।


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 &
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.