2010-10-08 27 views
12

क्या हम प्रतीकात्मक लिंक में $ HOME या अन्य पर्यावरण चर का उपयोग कर सकते हैं?प्रतीकात्मक लिंक में पर्यावरण चर

मुझे सापेक्ष पथ ../../.config का उपयोग करने के बारे में पता है लेकिन कभी-कभी ../ के लिए कई हैं :) ~/.config जैसे कुछ अधिक आरामदायक, या $ HOME का उपयोग होगा।

संपादित करें: टिप्पणी

habbie 'psmears साथ जवाब' जवाब है, खेद मेरे सवाल अधूरा था।

जबकि (अन्य उत्तर दिखाने के रूप में) आप जब सांकेतिक लिंक बनाने वातावरण चर का उपयोग कर सकते हैं (किसी भी शेल कमांड के साथ के रूप में!), आप वास्तव में वातावरण चर हो सकता है नहीं (या '~') सिमलिंक ही

में संदर्भ
+0

मेरी इच्छा है कि यह संभव था। एक उपयोग केस: आपके पास ~/bin निर्देशिका में सिम्लिंक का एक गुच्छा है जो कहता है, व्यक्तिगत गिट भंडार में लिपियों को '$ HOME/my_github_scripts' पर क्लोन किया गया है। आप कई मशीनों पर '~/bin' निर्देशिका से इन स्क्रिप्ट से लिंक करना चाहते हैं, लेकिन आपका उपयोगकर्ता नाम अलग है। तो आप उपयोगकर्ता नाम को हार्डकोड नहीं करना चाहते हैं (यह मेरे घर कंप्यूटर पर '/ home/joebloggs' हो सकता है लेकिन काम पर'/home/jbloggs', या मैक पर '/ user/joebloggs' भी हो सकता है)। –

+0

यदि कुछ विदेशी कोशिश करना चाहते हैं तो आप आरओएफएस फ़िल्टर में देख सकते हैं। –

उत्तर

29

प्रतीकात्मक लिंक कर्नेल द्वारा संभाले जाते हैं, और कर्नेल पर्यावरण चर के बारे में परवाह नहीं करता है। तो, नहीं।

+10

यह सुनिश्चित नहीं है कि कोई टिप्पणी छोड़ दिए बिना इसे किसने संशोधित किया - उत्तर सही है। जबकि (अन्य उत्तरों के रूप में) आप पर्यावरण चर का उपयोग कर सकते हैं * * प्रतीकात्मक लिंक बनाते हैं (जैसा कि किसी भी शेल कमांड के साथ!), आप वास्तव में सिम्लिंक में पर्यावरण चर (या '~') संदर्भ नहीं कर सकते हैं। – psmears

+0

thx वह सवाल था। – kfl62

+1

क्या आप किसी भी मौके से कर्नेल में प्रासंगिक स्रोत फ़ाइल को लिंक कर सकते हैं? – n611x007

2

हाँ। कोई बात नहीं। वास्तव में आप वास्तव में अपने लिंक में $ HOME चर का उपयोग नहीं करेंगे, इसलिए यह उदाहरण के लिए उपयोगकर्ताओं के समूहों के लिए स्मार्ट समाधान के साथ काम नहीं करेगा। कमांड को निष्पादित करते समय वेरिएबल को खोल द्वारा अनुवादित किया जाता है, और चर में सामग्री का उपयोग लिंक में किया जाता है।

ln -s ~/test /tmp/test 

/<path>/<to>/home/test -> /tmp/test 

आह को expaned है। और केवल एलएन कॉल करने वाले व्यक्ति के पर्यावरण चर काम करेंगे। आप लिंक में अन्य लोगों के पर्यावरण चर को स्टोर नहीं कर सकते हैं। कमांड को कॉल करने से पहले चर का विस्तार किया जाता है।

+0

मैंने बस सेंटोस बॉक्स पर यह कोशिश की और थॉमसमाल्ट लिखने का क्या सही है। परिवर्तनीय का प्रतीक प्रतीकात्मक लिंक बनाने के बिंदु पर किया जाएगा, और यदि आप पर्यावरण चर बदलते हैं तो गतिशील रूप से अपडेट नहीं किया जाएगा। – kskjon

-1

हाँ आप कर सकते हैं।

ln -s $HOME/file/or/folder newname 

आप अपने स्वयं के चर सेट कर सकते हैं और उनका भी उपयोग कर सकते हैं। अपने .bashrc में जोड़ें (या .bash_profile):

export $MYPATH=/your/path 
+0

थॉमोमाल्ट के जवाब की जांच करें। जो आपने कहा है वह सही है और खुद ही सही है, लेकिन सवाल यह है कि लिंक में पर्यावरण परिवर्तनीय संग्रहित होने के बारे में सवाल है कि जब भी लिंक का पालन किया जाता है तो पर्यावरण से परामर्श किया जाता है (जो संभव नहीं है)। –

+1

मुझे नहीं लगता कि यह प्रतिक्रिया वास्तव में प्रश्न के संदर्भ को समझ गई है। –

2

आप लिंक में चर आप इसे चारों ओर एकल उद्धरण डाल सकते हैं विस्तार करने के लिए नहीं करना चाहते हैं,

ln -s '$HOME/file/or/folder' newname 

यह देना होगा,

newname -> $HOME/file/or/folder 

यह आपके स्थानीय रूप से सेट $ HOME तक विस्तार करने के बजाय।

[नोट: यह निर्भर प्रणाली है - सभी प्रणालियों संस्करण सिमलिंक का समर्थन नहीं]

+0

मैं उत्सुक हूं यदि आप एक सिस्टम का नाम दे सकते हैं जो * करता है *? :) – conny

+0

मैं ओएस एक्स 10.9 पर ऐसा करने में सक्षम हूं। – JacobEvelyn

+0

@JacobEvelyn बस ओएस एक्स 10.9 पर कोशिश की। यह लिंक ('/ tmp/currenthome -> $ HOME') में पर्यावरण चर नाम को सही ढंग से संग्रहीत करता है - लेकिन लिंक लक्ष्य को सफलतापूर्वक हल नहीं किया जा सका। ('-bash: cd:/tmp/currenthome: ऐसी कोई फ़ाइल या निर्देशिका नहीं) –

0

निकटतम मैं आने के लिए एक FUSE फ़ाइल सिस्टम का उपयोग कर पाए हैं। एक कस्टम पासथ्रू फाइल सिस्टम लिखने के लिए fusepy का उपयोग करना बहुत आसान है, जो वास्तविक फ़ाइल को निर्धारित करने के दौरान पर्यावरण चर को पढ़ सकता है। बेशक, यह केवल प्रक्रिया के पर्यावरण चर को प्राप्त करता है जो पासथ्रू प्रणाली पर चढ़ता है, इसलिए यह उतना उपयोगी नहीं है जितना हो सकता है।

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