প্রতীকী লিঙ্ক এবং সুডো


10

আমি একটি প্রতীকী লিঙ্ক তৈরি:

ln -s /tmp/folder1 /tmp/folder2

তারপরে আমি / টিএমপি / ফোল্ডার 2 এ গিয়ে চালাব pwd:

$ cd /tmp/folder2/
$ pwd
/tmp/folder2
$ sudo pwd
/tmp/folder1 # <-- This is the odd part

কেন pwdসঙ্গে sudoমূল ডিরেক্টরির দেব? আমি একটি বাশ স্ক্রিপ্ট লিখছি এবং বর্তমান ডিরেক্টরিটির পরম পথের প্রয়োজন। সুডো দিয়ে আমি মনে করি না যে আমি মূল ডিরেক্টরিটি পেতে পারি।


আপনার লক্ষ্য কী পিডব্লিউডি শারীরিক (/ tmp / ফোল্ডার 1) পাথ বা উভয়ের জন্য লজিক্যাল (/ tmp / ফোল্ডার 2) পাথে?
ব্যবহারকারী 9517

উত্তর:


14

PWD কমান্ড উভয় builtin এবং / বিন / PWD একটি শেল হয়। সাধারণ পরিস্থিতিতে, বিল্টিনটি / বিন / পিডাব্লুডির পছন্দের হিসাবে চালানো হবে। Pwd কমান্ডটি ম্যান পৃষ্ঠা থেকে বিল্টিন এবং / বিন / পিডাব্লু ডিফল্ট উভয়ই pwd -Lবা হিসাবে ডাকা যেতে পারেpwd -Ppwd -L

-ল, - লজিক্যাল পরিবেশ থেকে পিডাব্লুডি ব্যবহার করুন, এমনকি এতে সিমলিংক রয়েছে

সুতরাং আপনি যখন পিডব্লিউডি চালান আপনি আসলে পিডব্লুডি-এল চালান যা কার্যকরভাবে প্রিন্ট করে $ পিডাব্লুডি (যদি এটি বিদ্যমান থাকে)। আপনি যখন চালান sudo pwd, sudo কেবল পরিবেশের ভেরিয়েবল সরবরাহ করে যা env_keepনির্দেশের মাধ্যমে দিয়ে যেতে বলা হয়েছিল । পিডব্লিউডি সাধারণত এই তালিকায় থাকে না তাই সুডো পিডাব্লুডিকে এটি কোথায় কাজ করতে হবে এবং ফলস্বরূপ কার্যকর হয়pwd -P

-পি, - ফিজিক্যাল সমস্ত চিহ্ন যুক্ত এড়ান

সমস্যা সমাধানের পথ পারেন ব্যবহার করা pwd -Pযদি আপনি ধারাবাহিকভাবে এনভায়রনমেন্ট ভেরিয়েবল এর লিস্টে গণপূর্ত যোগ করার জন্য sudoers একটি env_keep নির্দেশ মাধ্যমে রাখার শারীরিক ডিরেক্টরির পাথ অথবা চান (যেমন @Felix বলেছেন)

env_keep += "PWD"  

কাজ করে! পিডাব্লুডির পরে এনভ_কিপ যুক্ত হওয়ার পরে sudo pwd -Lযুক্তিযুক্ত পথটি পেতে আমার করা দরকার । sudo pwdশারীরিক পথ ফেরায়।
iDev247

6

বাশ ইন, pwdএকটি অন্তর্নির্মিত। /bin/pwdহিসাবে একই আচরণ ফলন sudo pwd

আপনি চাইবেন

  1. ব্যবহার করুন sudo pwd -L, যা কেবল যদি আপনি কাজ করেন
  2. Defaults env_keep=PWDআপনার sudoersফাইল অন্তর্ভুক্ত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.