ব্যাশে কিভাবে PATH কাজ করে

How Does Path Work Bash



যখন আপনি লিনাক্স টার্মিনালে একটি কমান্ড টাইপ করছেন, আপনি সাধারণত একটি নির্দিষ্ট কাজ করার জন্য একটি প্রোগ্রাম কল করছেন, উদাহরণস্বরূপ, ls , সিডি , আরএম , mkdir , ইত্যাদি এই সমস্ত প্রোগ্রাম ফাইল সিস্টেমের কোথাও অবস্থিত, তাই না? বাশ কিভাবে জানেন যে এই প্রোগ্রামগুলি কোথায়?

এখানে পরিবেশের ভেরিয়েবলগুলি খেলার মধ্যে আসে, বিশেষ করে PATH ভেরিয়েবল। এই ভেরিয়েবলটি বাশকে বলার জন্য দায়ী যে সেই প্রোগ্রামগুলি কোথায় দেখতে হবে। চলুন দেখে নিই কিভাবে PATH কাজ করে এবং কিভাবে PATH দেখতে/পরিবর্তন করতে হয়।







পরিবেশ পরিবর্তনশীল এবং $ PATH

শেল পরিভাষায়, পরিবেশ এমন একটি এলাকা যা শেলটি প্রতিবার একটি সেশন শুরু করার সময় তৈরি করে। পরিবেশ ব্যবস্থাপনা করার জন্য, পরিবেশের ভেরিয়েবলগুলি পরিবেশের বিভিন্ন অংশকে নির্দেশ করে। ভেরিয়েবলের মান হতে পারে স্ট্রিং, ডিরেক্টরি লোকেশন, ভ্যালু বা অন্য।



PATH এমন একটি পরিবেশগত পরিবর্তনশীল যা নির্দিষ্ট ডিরেক্টরিগুলির ট্র্যাক রাখে। ডিফল্টরূপে, PATH ভেরিয়েবল নিম্নলিখিত অবস্থানগুলি ধারণ করে।



  • /usr/bin
  • /usr/sbin
  • /usr/স্থানীয়/বিন
  • /usr/local/sbin
  • /am
  • /sbin
  • /স্ন্যাপ/বিন (যদি স্ন্যাপ ইনস্টল করা থাকে)

PATH এর অধীনে বর্তমানে কোন ডিরেক্টরিগুলি নিবন্ধিত আছে তা দেখতে চান? একটি টার্মিনাল চালু করুন এবং নিম্নলিখিত কমান্ডটি চালান।





$বের করে দিল $ পথ

এখানে, $ চিহ্নটি একটি পরিবর্তনশীল বোঝাতে হবে। দ্য বের করে দিল কমান্ড PATH ভেরিয়েবলের মান প্রিন্ট করে।



এখন, কেন এই নির্দিষ্ট পরিবেশ পরিবর্তনশীল এত গুরুত্বপূর্ণ? এটি কারণ শেল এবং সামগ্রিকভাবে সিস্টেম এটিকে কীভাবে আচরণ করে। PATH ভেরিয়েবল স্টোর যেখানে এক্সিকিউটেবল পাওয়া যাবে। যখনই কোন কমান্ড চালানো হয়, শেল লক্ষ্য এক্সিকিউটেবল ফাইলের জন্য PATH ডিরেক্টরিগুলি দেখায় এবং এটি চালায়।

উদাহরণস্বরূপ, এর সাথে পরীক্ষা করা যাক বের করে দিল কমান্ড এখানে, আমি একটি ইকো কমান্ড চালাচ্ছি।

$বের করে দিলওহে বিশ্ব!

এক্সিকিউটেবল ফাইল কোথায় বের করে দিল ? খুঁজে বের করতে পরবর্তী কমান্ডটি চালান।

$যা বের করে দিল

আমরা দেখতে পাচ্ছি, বের করে দিল এক্সিকিউটেবল/usr/bin/echo এ অবস্থিত। কোথায় অবস্থিত? খুঁজে বের কর.

$যা যা

এটি/usr/bin/যা এ ​​অবস্থিত। বেশিরভাগ কমান্ড টুলস /usr /bin ডিরেক্টরি এর অধীনে অবস্থিত। এখানে, bash একটি কমান্ডের এক্সিকিউটেবল (গুলি) অনুসন্ধানের জন্য অবস্থানের জন্য PATH এর সাথে পরামর্শ করছে।

PATH পরিবর্তন করা হচ্ছে

আমরা PATH এর মান পরিবর্তন করার আগে, এর গঠন বোঝা গুরুত্বপূর্ণ। PATH এর মান পরীক্ষা করতে আবার কমান্ডটি চালান।

$বের করে দিল $ পথ

লক্ষ্য করুন যে প্রতিটি ডিরেক্টরি একটি: চিহ্ন দ্বারা পৃথক করা হয়েছে।

PATH- এ ডিরেক্টরি যোগ করা

PATH- এ একটি কাস্টম ডিরেক্টরি যুক্ত করতে, আমরা bashrc ফাইলের সাহায্য নেব। এটি একটি বিশেষ ব্যাশ স্ক্রিপ্ট যা প্রতিবার একটি নতুন ব্যাশ সেশন শুরু হলে ব্যাশ লোড হয়। মনে রাখবেন যে bashrc ফাইলটি লিনাক্স সিস্টেমের প্রতিটি ব্যবহারকারীর জন্য অনন্য।

একটি টেক্সট এডিটরে bashrc ফাইলটি খুলুন। যদি bashrc ফাইলটি ইতিমধ্যে উপস্থিত না থাকে, তাহলে সম্পাদক এটি স্বয়ংক্রিয়ভাবে তৈরি করবে।

$আমি এসেছিলাম~/.bashrc

এখানে, এটি ডিফল্ট বাশ্রক যা উবুন্টুর সাথে আসে। ফাইলের শেষের দিকে যান (যদি এটি বিদ্যমান থাকে) এবং নিম্নলিখিত লাইন যোগ করুন।

$রপ্তানি পথ='$ পথ: / '

এখানে, PATH ভেরিয়েবলের নতুন মান পুরানো ভেরিয়েবলের সাথে আমরা যে নতুন ডিরেক্টরি যোগ করেছি তা হবে।

ফাইলটি সংরক্ষণ করুন এবং ব্যাশকে এটি পুনরায় লোড করতে বলুন।

$সূত্র~/.bashrc

নতুন পথ সফলভাবে যোগ করা হয়েছে কিনা তা যাচাই করা যাক।

$বের করে দিল $ পথ

ভয়েলা! পথ সফলভাবে আপডেট হয়েছে! এখন, ব্যাশ এক্সিকিউটেবল (গুলি) এর জন্য নতুন পথও অনুসন্ধান করবে। আমার ইতিমধ্যে একটি স্ক্রিপ্ট আছে demo.sh ডেস্কটপে। আসুন দেখি সঠিক অবস্থান উল্লেখ না করে বাশ এটি কল করতে পারে কিনা।

$demo.sh

হ্যাঁ, বাশ কোন সমস্যা ছাড়াই সরাসরি কল করতে পারেন।

PATH থেকে ডিরেক্টরি সরানো হচ্ছে

PATH থেকে ডিরেক্টরি যুক্ত/সরানোর কোন সহজ উপায় নেই। আমাকে ব্যাখ্যা করতে দাও.

PATH এর মান আসলে স্থির। তারপর, bashrc কৌশল সম্পর্কে কি? Bashrc একটি ব্যাশ স্ক্রিপ্ট যা প্রতিবার একটি সেশন শুরু করার সময় ব্যাশ লোড হয়। Bashrc এ, আমরা শুধু ঘোষণা করেছি যে PATH এর নতুন মান হবে তার ডিফল্ট মান এবং ব্যবহারকারী দ্বারা নির্ধারিত ডিরেক্টরি। এখন, প্রতিবার bash লোড হওয়ার সময়, এটি দেখে যে bashrc PATH- এর একটি নতুন মান নির্ধারণ করতে বলছে এবং এটি তাই করে।

একইভাবে, যদি আমরা PATH থেকে একটি ডিরেক্টরি অপসারণ করতে চাই, তাহলে আমাদের bashrc- এ PATH- এর একটি ভিন্ন মান পুনরায় বরাদ্দ করতে হবে যাতে প্রতিবার ব্যাশ শুরু হলে এটি পরিবর্তিত মান ব্যবহার করে।

আসুন এই উদাহরণটি দেখি। আমি PATH থেকে ডিরেক্টরি Des/ডেস্কটপ অপসারণ করতে ইচ্ছুক।

$বের করে দিল $ পথ | sed -এবং এর/: ~ /ডেস্কটপ $ // '

যদি ডিরেক্টরিটি/home/wrong/dir, কমান্ডটি এইরকম দেখাবে।

$বের করে দিল $ পথ | sed -এবং 's/: /home wrong/ভুল /dir $ //'

এখানে, আকর্ষণীয় অংশ হল sed টুল। Sed সম্পর্কে আরও জানুন এখানে এবং এখানে । দীর্ঘ গল্প সংক্ষিপ্ত, sed ব্যবহার করে, আমরা এর আউটপুট পরিবর্তন করছি বের করে দিল কমান্ড এখন, আমরা এই পরিবর্তিত আউটপুট ব্যবহার করতে পারি PATH এর মান পরিবর্তন করতে।

একটি টেক্সট এডিটরে bashrc খুলুন এবং নিম্নলিখিত লাইন যোগ করুন। আমি ইচ্ছাকৃতভাবে পূর্ববর্তী লাইনগুলো রাখছি এটা প্রমাণ করার জন্য যে এটি কাজ করছে।

$রপ্তানি পথ='$ (প্রতিধ্বনি $ PATH | sed -e 's/: ~ /ডেস্কটপ $ //')'

বিকল্পভাবে, আপনি নিজেও PATH এর মান সেট করতে পারেন। এটি একটি শ্রমসাধ্য প্রক্রিয়া কিন্তু আরো সহজবোধ্য এবং সহজ।

$রপ্তানি পথ=/ইউএসআর/স্থানীয়/sbin:/ইউএসআর/স্থানীয়/আমি:/ইউএসআর/sbin:/ইউএসআর/আমি:/sbin:/আমি:
/ইউএসআর/গেম:/ইউএসআর/স্থানীয়/গেম:/স্ন্যাপ/আমি

এখানে, কমান্ডের মান PATH- এ নির্ধারিত হবে। ফাইলটি সংরক্ষণ করুন এবং bashrc পুনরায় লোড করুন।

$সূত্র~/.bashrc

আসুন ফলাফল যাচাই করি।

$বের করে দিল $ পথ

PATH মান আপডেট করা হয়েছে!

সর্বশেষ ভাবনা

ব্যাশে, PATH পরিবর্তনশীল একটি গুরুত্বপূর্ণ। ব্যাশ সেশনের মাধ্যমে চলমান যে কোন প্রোগ্রাম ভেরিয়েবলের উত্তরাধিকারী, তাই এটি গুরুত্বপূর্ণ যে PATH শুধুমাত্র প্রয়োজনীয় ডিরেক্টরিগুলি অন্তর্ভুক্ত করে। আরো ডিরেক্টরি যোগ করা শুধুমাত্র সিস্টেমে অপ্রয়োজনীয়তা যোগ করবে।

ব্যাশের জন্য সমস্ত পরিবেশ ভেরিয়েবল দেখতে, এই কমান্ডটি চালান। প্রথম কমান্ড অংশটি সমস্ত পরিবেশগত ভেরিয়েবল ফিরিয়ে দেবে এবং দ্বিতীয় অংশটি আউটপুটকে ক্রমানুসারে সাজাবে।

$env | সাজান

আপনার বাশ অভিজ্ঞতা মশলা করতে চান? বাশ উপনামগুলি জিনিসগুলিকে দ্রুত এবং স্পাইস করার একটি অনন্য উপায় সরবরাহ করে। বাশ উপনাম সম্পর্কে আরও জানুন

উপভোগ করুন!