ধারণাগত স্তর
আপনি যখন শেল থেকে কোনও প্রক্রিয়া শুরু করেন, প্রক্রিয়াটির বর্তমান কার্যক্ষম ডিরেক্টরিটি আপনার শেলের বর্তমান কার্যক্ষম ডিরেক্টরি হিসাবে একই। শেলটির প্রসঙ্গে, বর্তমান কার্যক্ষম ডিরেক্টরিটি আপনি বর্তমানে "অবস্থিত" অবস্থান "
যে কোনও প্রক্রিয়ার বর্তমান চলমান ডিরেক্টরি আপেক্ষিক পাথের ব্যাখ্যার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আপনার শেলের বর্তমান ওয়ার্কিং ডিরেক্টরিটি ছিল /home/reneএবং আপনি ls ..শেল থেকে ছুটে এসেছিলেন , প্রক্রিয়াটির বর্তমান ওয়ার্কিং ডিরেক্টরিটি /home/reneএটি সমাধান ..করার জন্য ব্যবহৃত হত /home।
আপনি আপনার সিস্টেমে চলমান সমস্ত প্রক্রিয়াটির বর্তমান কার্যকরী ডিরেক্টরিগুলি দেখতে পাচ্ছেন lsof | grep '\scwd\s'(নোট করুন যে অন্য ব্যবহারকারীদের প্রক্রিয়াগুলি দেখার জন্য আপনাকে সম্ভবত মূল হতে হবে।) এটি আপনাকে বর্তমান কার্য ডিরেক্টরিগুলি কীভাবে সম্পর্কিত তার একটি ধারণা দিতে পারে আপনার সিস্টেমে প্রক্রিয়াগুলি চলছে।
প্রোগ্রাম স্তর
শেলের সাম্প্রতিক কাজ করা ডিরেক্টরি আপনি দেখতে এবং শেল বিল্ট-ইন সঙ্গে সংশোধন হয় pwdএবং cdযথাক্রমে। এই কমান্ডগুলি কল সিস্টেম কল যেমন getcwdএবং chdirএটি আপনার শেলের বর্তমান কার্যকরী ডিরেক্টরিতে কাজ করে।
bashউদাহরণ হিসাবে ব্যবহার করে , cdঅন্তর্নির্মিত অবশেষে এই লাইনটি চালায়:
if (chdir (nolinks ? newdir : tdir) == 0)
এবং pwdঅন্তর্নির্মিত অবশেষে এই লাইনটি চালায়:
the_current_working_directory = getcwd (0, PATH_MAX);
শেলটি বর্তমান চলমান ডিরেক্টরি ডিরেক্টরি ব্যবহারের একটি সুবিধাজনক উদাহরণ; এই একই সিস্টেম কলগুলি অন্যান্য প্রোগ্রামগুলিও ব্যবহার করে। একটি প্রোগ্রাম তার বর্তমান চলমান ডিরেক্টরিটি পরিবর্তন করতে পারে /usrএবং প্রোগ্রামটি যে কোনও আপেক্ষিক পাথ ব্যবহার করে তা /usrডিরেক্টরি থেকে শুরু হবে ,
কার্নেল স্তর
প্রক্রিয়াটির বর্তমান কার্যকারী ডিরেক্টরি কার্নেল দ্বারা সংরক্ষণ করা হয়। লিনাক্স এটা সঞ্চয় করে pwdএকটি সদস্য fs_structদ্বারা সরু fsএকটি সদস্য task_struct। pwdসদস্য হয় pathstruct হয়, যা মাউন্ট সম্বন্ধে তথ্যে পয়েন্ট ( vfsmount) এবং ফাইলসিস্টেম ডিরেক্টরিতে এর অবস্থান ( dentry)। প্রতিটি প্রক্রিয়া এর task_structসাথে যুক্ত থাকে।
chdirএবং getcwdসিস্টেম কল সংশোধন এবং তথ্য পুনরুদ্ধার pwd।