2010-01-10 16 views
8

एक मछली खोल स्क्रिप्ट में, क्या पथ को प्राप्त करना संभव है जहां शेल स्क्रिप्ट रहता है? बैश में, आप ऐसा करने के लिए BASH_SOURCE चर का उपयोग कर सकते हैं।मछली के साथ वर्तमान स्रोत फ़ाइल का मार्ग पुनर्प्राप्त करें

उत्तर

9

एक तरीका status कमांड का उपयोग करना है।

उदाहरण के लिए।

~/tmp> echo status -f > show_filename.fish 
~/tmp> fish show_filename.fish 
/home/foo/tmp/show_filename.fish 

-

आह, माफ करना - अपनी टिप्पणी द्वारा पहचानने, मैं प्रश्न पढ़ने में भूलना। मैंने सोचा कि आप स्क्रिप्ट की निर्देशिका के बजाय पूरी तरह से योग्य पथ का मतलब है।

आप केवल स्थिति का परिणाम dirname भेज सकते हैं। यह मछली का एक अंतर्निर्मित कार्य नहीं है, जैसे कि स्थिति है, लेकिन मछली इस कार्यक्षमता के जितना अधिक संसाधन आउटसोर्स कर सकती है, वैसे भी ("न्यूनतमता का कानून" देखें, मछली design doc में मछली)। मैं इसके लिए दस्तावेज़ों में कुछ भी बेहतर कमांड नहीं देख सकता, तो शायद यह उतना अच्छा है जितना हम अभी प्राप्त कर सकते हैं?

उदाहरण में संशोधन, होना करने के लिए show_filename.fish की सामग्री को बदलने के लिए:

dirname (status -f) 

अब आप मिलना चाहिए:

~/tmp> fish show_filename.fish 
/home/foo/tmp 
+0

यह बहुत करीब है।/Home/foo/tmp पाने के लिए /home/foo/tmp/show_filename.fish स्ट्रिंग को पार्स करने का शुद्ध मछली तरीका है? –

+0

बिल्कुल सही! यही वही है जो मैं चाहता था। –

+0

'सीडी (डायरनाम (स्थिति-एफ)); और pwd' पूर्ण पथ देता है भले ही आप वर्तमान निर्देशिका में स्क्रिप्ट चला रहे हों। – Ezbob

संबंधित मुद्दे