ধারণাগত স্তর
আপনি যখন শেল থেকে কোনও প্রক্রিয়া শুরু করেন, প্রক্রিয়াটির বর্তমান কার্যক্ষম ডিরেক্টরিটি আপনার শেলের বর্তমান কার্যক্ষম ডিরেক্টরি হিসাবে একই। শেলটির প্রসঙ্গে, বর্তমান কার্যক্ষম ডিরেক্টরিটি আপনি বর্তমানে "অবস্থিত" অবস্থান "
যে কোনও প্রক্রিয়ার বর্তমান চলমান ডিরেক্টরি আপেক্ষিক পাথের ব্যাখ্যার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আপনার শেলের বর্তমান ওয়ার্কিং ডিরেক্টরিটি ছিল /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
সদস্য হয় path
struct হয়, যা মাউন্ট সম্বন্ধে তথ্যে পয়েন্ট ( vfsmount
) এবং ফাইলসিস্টেম ডিরেক্টরিতে এর অবস্থান ( dentry
)। প্রতিটি প্রক্রিয়া এর task_struct
সাথে যুক্ত থাকে।
chdir
এবং getcwd
সিস্টেম কল সংশোধন এবং তথ্য পুনরুদ্ধার pwd
।