$ पीडब्ल्यूडी क्या है? (वर्तमान कामकाजी निर्देशिका बनाम)


27

तो विकिपीडिया ( लिंक ) मुझे बताता है कि कमांड pwd"प्रिंट वर्किंग डायरेक्टरी" के लिए छोटा है, और यह समझ में आता है।

लेकिन पर्यावरण चर के लिए, "पी" को प्रिंट के अलावा किसी और चीज के लिए एक परिचित होना है।

मैं लोगों को "वर्तमान कार्यशील निर्देशिका" के बारे में बात करते हुए सुनता हूं, जो बेहतर लगता है और अधिक सहज है, लेकिन फिर भी पर्यावरण चर को $ PWD कहा जाता है, और $ CWD नहीं। कोई भी कभी नहीं कहता है "क्या आपने प्रिंट वर्किंग डायरेक्टरी वैरिएबल की जांच की है?"।

मैं वर्तमान में वेब एप्लिकेशन सर्वर uWSGI के साथ खेल रहा हूं, और जब यह चल रहा है तो मुझे बताता है (uWSGI आँकड़े पृष्ठ पर):

"cwd":"/home/velle/greendrinks",

इसलिए वे स्पष्ट रूप से (अधिक सहज ज्ञान युक्त) अधिक पसंद करते cwdहैं pwd

मुझे लगता है कि मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या मैंने कुछ गलत समझा है, या अगर यह पर्यावरण चर को एक अनपेक्षित नाम दिए जाने की बात है?


5
वर्तमान कार्य निर्देशिका?
दारोप्प

3
मुझे संदेह है कि आप इसे खत्म कर रहे हैं। $PWDके बराबर है `pwd`, और यह पर्याप्त औचित्य था।
वह अन्य लड़का

1
एक और अनुमान: प्रक्रिया कार्य निर्देशिका?
ऑक्सीफ

जवाबों:


23

यह इस बात पर निर्भर करता है कि आप क्या कर रहे हैं। सबसे पहले, $PWDएक पर्यावरण चर है और pwdएक शेल बिलिन या वास्तविक बाइनरी है:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

$PWDजब तक आप -Pध्वज का उपयोग नहीं करेंगे तब तक , बैश बिलिन वर्तमान मूल्य को प्रिंट करेगा । जैसा कि समझाया गया है help pwd:

pwd: pwd [-LP]

    वर्तमान कार्यशील निर्देशिका का नाम प्रिंट करें।

    विकल्प:

      -L
          $PWD यदि यह वर्तमान कार्यशील निर्देशिका का नाम देता है, तो इसका मूल्य प्रिंट करें
      -P
          किसी भी प्रतीकात्मक लिंक के बिना, भौतिक निर्देशिका को प्रिंट करें

    डिफ़ॉल्ट रूप से, 'pwd' ऐसा व्यवहार करता है मानो '-L' निर्दिष्ट किया गया हो।

pwdद्विआधारी, दूसरे हाथ पर, के माध्यम से वर्तमान निर्देशिका हो जाता है getcwd(3)सिस्टम कॉल जो रूप में एक ही मान देता है readlink -f /proc/self/cwd। वर्णन करने के लिए, उस निर्देशिका में जाने का प्रयास करें जो दूसरे के लिए एक कड़ी है:

$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun  4 11:22 foo
lrwxrwxrwx 1 terdon terdon    4 Jun  4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo

इसलिए, निष्कर्ष में, जीएनयू सिस्टम (जैसे कि उबंटू) पर, pwdऔर echo $PWDसमकक्ष हैं जब तक कि आप -Pविकल्प का उपयोग नहीं करते हैं , लेकिन /bin/pwdअलग है और जैसे व्यवहार करता है pwd -P

स्रोत /ubuntu//a/476633/291937


1
@llua PWDएक पर्यावरण चर होने के लिए कुछ भी नहीं मना करता है। यह वास्तव में डिफ़ॉल्ट मामला है, यदि सभी शेल नहीं हैं और यह बच्चों की प्रक्रियाओं को प्रदान करने के लिए समझ में आता है।
jlliagre

1
मुझे आश्चर्य है कि लोगों ने क्यों अपमानित किया, यह एक अच्छा जवाब है, और अच्छी तरह से समझाया गया है।
मैड्स स्केजर्न

2
@MadsSkjern अधिकांश बिल्डरों को POSIX मानक द्वारा कमांड के रूप में भी उपलब्ध होना आवश्यक है। यह उन्हें शेल लॉन्च करने की आवश्यकता के बिना अन्य कार्यक्रमों से सीधे कॉल करने की अनुमति है।
जलियागरे

2
यह वास्तव में मेरे लिए सवाल का जवाब नहीं है। यह प्रश्न वास्तव में $PWDऔर pwd(जो मेरे विश्वास करने से पहले U & L पर पहले से ही कवर हो चुका है) के बारे में नहीं है, लेकिन उन कारणों के बारे में जिनके कारण परिवर्तनशील नामकरण " PWD" हुआ।
जॉन डब्ल्यूएच स्मिथ

1
@ तुशी आप संभावना से अधिक सही हैं। पीडब्लूडी ksh88किस दस्तावेज के रूप में पेश किया गया था : PWD The present working directory set by the cd command.आपको इसे अपने उत्तर में जोड़ना चाहिए।
jlliagre

15

$ लोक निर्माण विभाग है पी वर्तमान की athname डब्ल्यू orking डी irectory

जब प्रतीकात्मक लिंक होते हैं, तो $ PWD को पढ़ने से लेकर कमांड pwd निष्पादित करने तक के अलग-अलग परिणाम हो सकते हैं ।


आप कैसे का एक उदाहरण के लिए अलग मान प्राप्त करने के लिए दे सकता है $PWDऔर pwd?
मैड्स स्केजर्न

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