প্রতীকী লিঙ্কগুলি সমাধান করা (pwd)


32

বলুন আমি নিম্নলিখিতটি করি:

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

তা হলে:

cd /some/path
cd symbolic_name
pwd

আমি পাই:

/some/path/symblic_name

এবং না:

/target/path

শেলটি একটি প্রতীকী লিঙ্ক (যেমন সিডাব্লুডি আপডেট করা ইত্যাদি) "পুরোপুরি সমাধান" করার কোনও উপায় আছে, যেন আমি সরাসরি করেছি:

cd /target/path

?

আমি কীভাবে আমার টার্গেটের পথে পৌঁছে যাব সে সম্পর্কে "সচেতন" বা "সংবেদনশীল" বলে মনে হচ্ছে এমন কিছু প্রোগ্রাম আমার চালানো দরকার এবং আমি তাদের মনে করতে চাই যে আমি লক্ষ্য পথে পৌঁছেছি যেন cd /target/pathসরাসরি হয়েছে।


7
এই প্রশ্নের সাথে সম্পর্কিত । আপনি সিমলিংকের পরিবর্তে শারীরিক পথে যেতে pwd -Pবা alias pwd='pwd -P'করতেও cd -Pপারেন।
মার্টন ক্যানভাল

@ মার্টনকানাভাল ধন্যবাদ; এটাই আমি খুঁজছিলাম!
রায়ান

উত্তর:


35

আপনার শেলের একটি বিল্টিন রয়েছে pwd, যা "স্মার্ট" হওয়ার চেষ্টা করে। পরে আপনি একটি করেনি cdএকটি অভ্যন্তরীণ সিমবলিক লিঙ্ক pwdfakes আউটপুট হিসাবে যদি আপনি একটি বাস্তব ডিরেক্টরি সরানো হয়েছে।

-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 আরো কিছু ভাল তথ্যের জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.