प्रतीकात्मक लिंक (pwd) को हल करना


32

कहो मैं निम्नलिखित कार्य करता हूं:

cd /some/path
ln -s /target/path symbolic_name

अगर ऐसा है:

cd /some/path
cd symbolic_name
pwd

मुझे मिला:

/some/path/symblic_name

और नहीं:

/target/path

वहाँ एक तरीका है कि "पूरी तरह से" एक प्रतीकात्मक लिंक (यानी CWD, आदि को अद्यतन करने) हल है, जैसे कि मैंने सीधे किया था:

cd /target/path

?

मुझे कुछ कार्यक्रम चलाने की आवश्यकता है जो मुझे लगता है कि "मेरे लक्ष्य पथ पर कैसे पहुँचें" या "संवेदनशील" प्रतीत होते हैं, और मैं चाहूंगा कि वे यह सोचें कि मैं लक्ष्य पथ पर पहुँचा जैसे कि cd /target/pathसीधे किया था ।


7
इस सवाल से संबंधित । आप क्या कर सकते हैं pwd -Pया alias pwd='pwd -P'भी cd -Pसिमलिंक के बजाय भौतिक पथ पर जाने के लिए।
मार्टिन कैनावल

@ MartínCanaval धन्यवाद; यही मैं ढूंढ रहा था!
रयान

जवाबों:


35

आपके शेल में एक बिल्डिन है pwd, जो "स्मार्ट" होने की कोशिश करता है। जब आप cdकिसी सिमिलिंक के लिए करते हैं, तो आन्तरिक pwdफ़ेक का उत्पादन होता है जैसे कि आप एक वास्तविक निर्देशिका में चले जाते हैं।

-Pविकल्प को पास करें pwd, यानी चलाएं pwd -P-Pविकल्प ( "भौतिक" के लिए) कहता है pwdकिसी भी प्रतीकात्मक कड़ी ट्रैकिंग करते हैं और निर्देशिका के लिए 'असली' पथ प्रदर्शित करने के लिए नहीं।

वैकल्पिक रूप से, एक वास्तविक द्विआधारी भी होना चाहिए pwd, जो इस तरह का जादू नहीं करता (और ऐसा करने में सक्षम भी नहीं है)। बस उस द्विआधारी अन्वेषण का उपयोग करें:

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd
$ mkdir a
$ ln -s a b
$ cd b
$ pwd
/home/michas/b
$ /bin/pwd
/home/michas/a

12

कोशिश करो cd -P <symlink_dirname>

tim@ls:~$ mkdir a
tim@ls:~$ ln -s a b

tim@ls:~$ cd b
tim@ls:~/b$ pwd
/home/tim/b

tim@ls:~/b$ cd ..
tim@ls:~$ cd -P b
tim@ls:~/a$ pwd
/home/tim/a

आप set -o physicalचल रहे शेल के जीवनकाल के माध्यम से इस व्यवहार को बनाए रखने के लिए भी उपयोग कर सकते हैं ।

की जाँच करें https://stackoverflow.com/questions/10456784/behavior-of-cd-bash-on-symbolic-links कुछ और अच्छा जानकारी के लिए।

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