কমান্ডগুলি কেবল ডিস্ক অপারেটিং সিস্টেমের কমান্ড নয়। পাথ হল ডিরেক্টরিগুলির একটি তালিকা যেখানে শেল অপারেটিং সিস্টেমের কমান্ড এবং অন্যান্য কমান্ডের সন্ধান করে। কমান্ডগুলি শর্ট প্রোগ্রাম ফাইলের মতো। সুতরাং, কমান্ডগুলি এক্সিকিউটেবল। কম্পিউটারে ইনস্টল করা প্রতিটি অ্যাপ্লিকেশন একটি এক্সিকিউটেবল ফাইল নিয়ে আসে। অ্যাপ্লিকেশনটি চালানোর জন্য, এক্সিকিউটেবল ফাইলটি প্রথমে নিযুক্ত করা হয়। এই এক্সিকিউটেবল ফাইলগুলিকে কমান্ডও বলা হয়।
PATH ভেরিয়েবল ছাড়া, প্রতিটি কমান্ডকে পরম পাথ দিয়ে কমান্ড করা হবে, যেমন,
/home/john/dir1/dir2/command.exe
যেখানে প্রথম / হল মূল ডিরেক্টরি; জন ব্যবহারকারীর জন্য ব্যবহারকারী ডিরেক্টরি, জন; dir1 এবং dir2 হল উপ-ডিরেক্টরি; এবং command.exe এক্সিকিউটেবল ফাইলের নাম।
এক্সিকিউটেবল ফাইলের জন্য আরও অনেক নাম সম্ভব। আসলে, command.exe এখানে প্রতীকী। সুতরাং, যদি ডিরেক্টরি,/home/john/dir1/dir2 (ফাইল ছাড়া), PATH ভেরিয়েবলে থাকে, ব্যবহারকারী জন প্রম্পটে command.exe চালাবে, [ইমেল সুরক্ষিত]: ~ $ কেবল টাইপ করে, command.exe, পূর্ববর্তী পথ ছাড়া। এটাই:
[ইমেল সুরক্ষিত]: ~ $command.exeএবং তারপর এন্টার টিপুন।
কম্পিউটারে PATH ডিরেক্টরিগুলির বর্তমান তালিকা দেখতে, টাইপ করুন:
$বের করে দিল $ পথএবং টার্মিনালে এন্টার টিপুন। ফলাফলটি এমন কিছু হবে,
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
এখন প্রশ্ন হল: কিভাবে একটি ডিরেক্টরি (এবং তার পূর্ববর্তী পথ), PATH পরিবর্তনশীল যোগ করা হয়? কিছু ইনস্টলেশনের সাথে, ডিরেক্টরি স্বয়ংক্রিয়ভাবে যোগ করা হয়। অন্যদের সাথে, এটি ম্যানুয়ালি যোগ করতে হবে। এই নিবন্ধটি দুটি প্রধান উপায় ব্যাখ্যা করে, যেখানে ডিরেক্টরি যোগ করা হয়। ডিরেক্টরিটি যোগ করা হয়নি (অন্তর্ভুক্ত) কারণ এটি একটি অ্যারেতে করা হবে। দুটি প্রধান উপায় অস্থায়ী সংযোজন এবং স্থায়ী সংযোজন হিসাবে উল্লেখ করা হয়। বাশ হল এই নিবন্ধের কোড উদাহরণের জন্য ব্যবহৃত শেল।
নিবন্ধ বিষয়বস্তু
- ভূমিকা - উপরে দেখুন
- সাময়িক সংযোজন
- স্থায়ী সংযোজন
- উপসংহার
সাময়িক সংযোজন
অস্থায়ী সংযোজন মানে সংযোজন শুধুমাত্র স্মৃতিতে সঞ্চালিত হয়। কম্পিউটার রিবুট হলে এটি ব্যবহারের জন্য সংরক্ষিত হয় না।
দ্য বর্ন শেল বিল্ট-ইন এক্সপোর্ট কমান্ড
সহজ কথায়, রপ্তানি কমান্ড হল:
$রপ্তানি [নাম[= মান]]এই ক্ষেত্রে, এটি মেমরির একটি ভেরিয়েবলের জন্য একটি মান পুনরায় বরাদ্দ করে।
মেমরিতে PATH ভেরিয়েবলের ইতিমধ্যেই মান থাকতে পারে,
PATH =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
অনুমান করুন যে ডিরেক্টরি যোগ করা হবে তা হল/home/john/dir1/dir2। যদি এক্সপোর্ট কমান্ড টাইপ করা হয়,
$রপ্তানি পথ=/বাড়ি/জন/dir1/dir2তারপর/home/john/dir1/dir2 PATH ভেরিয়েবলের মান হিসাবে ইতিমধ্যেই মেমরিতে থাকা সমস্ত কিছু প্রতিস্থাপন করবে।
যদি এক্সপোর্ট কমান্ড টাইপ করা হয়,
$রপ্তানি পথ=$ পথ:/বাড়ি/জন/dir1/dir2তারপর,/home/john/dir1/dir2 ইতিমধ্যেই ভেরিয়েবলের শেষে নিজেকে সংযুক্ত করবে। সুতরাং, নতুন পরিবর্তনশীল হবে:
PATH =/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/ বাড়ি/জন/dir1/dir2
লক্ষ্য করুন যে উপরের কোডের পূর্ববর্তী লাইনে, ইতিমধ্যেই যে ভ্যালু আছে তার অংশটি কোলন দিয়ে নতুন অংশ থেকে আলাদা করা হয়েছে, যা ':'। কোডের লাইনে $ PATH, ইতিমধ্যে মেমরিতে থাকা PATH এর মান দ্বারা প্রসারিত (প্রতিস্থাপিত)।
এখন, একই কমান্ড একাধিক ডিরেক্টরিতে হতে পারে। যখন প্রম্পটে পূর্ববর্তী পথ ছাড়াই একটি এক্সিকিউটেবল কমান্ড টাইপ করা হয়, তখন শেল বাম থেকে ডানে, মেমরিতে PATH ভেরিয়েবলের মান (স্ট্রিং) অনুসন্ধান শুরু করে। সুতরাং, উপরের কোডের লাইনের সাথে,/home/john/dir1/dir2 শেষ পর্যন্ত, অনুসন্ধানে আসবে। কে চায় তার ডিরেক্টরি শেষ পর্যন্ত আসুক? - কেউ না। সুতরাং, ডিরেক্টরিটি অন্তর্ভুক্ত (যোগ) করার একটি ভাল উপায় নিম্নরূপ:
$রপ্তানি পথ=/বাড়ি/জন/dir1/dir2:$ পথ/home/john/dir1/dir2 এখন শুরুতে, একটি কোলন সহ পরবর্তী ডিরেক্টরি থেকে আলাদা। সুতরাং, [ইমেল সুরক্ষিত] এর প্রম্পট সহ: ~ $,
[ইমেল সুরক্ষিত]: ~ $রপ্তানি পথ=/বাড়ি/জন/dir1/dir2:$ পথটাইপ এবং এন্টার চাপার পর, ডিরেক্টরিতে কমান্ড, exe কমান্ড, dir2, এর সাথে কার্যকর করা হবে:
[ইমেল সুরক্ষিত]: ~ $command.exeযতক্ষণ কম্পিউটার বন্ধ না হয়, ততক্ষণ ব্যবহারকারী পূর্ববর্তী পথ না লিখে command.exe চালাতে থাকবে।
কম্পিউটার বন্ধ হয়ে গেলে, এলোমেলো-অ্যাক্সেস-মেমরির সবকিছু মুছে যায়। খারাপ খবর হল কম্পিউটার ব্যবহারকারীকে প্রতিবার কম্পিউটার রিবুট করার সময় PATH ভেরিয়েবলে তার ডিরেক্টরি যোগ করার এই প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। আজ কেউ তা করতে চায় না। সুতরাং, স্থায়ী সংযোজন পদ্ধতি হল প্রস্তাবিত পদ্ধতি। অর্থাৎ, PATH এর সংযোজন, সংরক্ষণ করতে হবে (হার্ডডিস্কে)।
স্থায়ী সংযোজন
উপরোক্ত আলোচনা থেকে, ধারণাটি করা হয়েছে পরিবর্তন করা (হার্ডডিস্কে) সংরক্ষণ করা। সুতরাং, যদি পরিবর্তনটি এমন একটি ফাইলে সংরক্ষণ করা হয় যা শেলটি প্রতিবার কম্পিউটার বুট করার সময় পড়ে, তবে এটি ঠিক হবে। অর্থাৎ, প্রতিবার কম্পিউটার বুট করার সময়, মেমরিতে PATH ভেরিয়েবল যথাযথভাবে আপডেট করা হবে। যখন কম্পিউটার শুরু হয়, বুট করার সময়, এটি কিছু ফাইল পড়ে। লিনাক্সের জন্য বাশ শেল যে ফাইলগুলি পড়ে তা হল, ~/.bashrc। ফাইলের নাম হল। bashrc , বিন্দু দিয়ে শুরু। এটি ব্যবহারকারীর নির্দেশিকায় রয়েছে।
ব্যাশ কেবল একটি শেল, সম্ভবত লিনাক্সের জন্য সম্ভবত সবচেয়ে জনপ্রিয় শেল। লিনাক্সের জন্য আরেকটি শেল হল Zsh। Zsh এর সাথে, সংশ্লিষ্ট ফাইল হল ~/। zshrc , এখনও ব্যবহারকারীর নির্দেশিকায়। যখন শেল শুরু হয়, বুট করার সময়, এটি এই ফাইলটি পড়ে। ব্যাশের জন্য, ফাইলটি হল, ~/.bashrc। সুতরাং, যদি উপরের সংযোজন কোডটি ~/.bashrc ফাইলে টাইপ করা হয়, তবে ডিরেক্টরিটি সর্বদা মেমরিতে থাকবে, কারণ ~/.bashrc সর্বদা এটিকে PATH এ অন্তর্ভুক্ত করবে, প্রতিবার কম্পিউটার বুট করার সময়। কম্পিউটার বন্ধ না হওয়া পর্যন্ত এটি মেমরিতে থাকে।
ব্যাশে, ~/.bashrc একটি লুকানো ফাইল, তাই কমান্ডের সাধারণ ব্যবহার, ls এটি দেখাবে না। Bash/.bashrc কিছু বাশ (শেল) কমান্ড রয়েছে। উবুন্টু লিনাক্সের একটি রূপ। উবুন্টু একটি টেক্সট এডিটর নিয়ে আসে। লেখকের কম্পিউটারে, উবুন্টু পাঠ্য সম্পাদকের পটভূমি কালো।
উপরের সংযোজন কমান্ড (প্রম্পট ছাড়া) ~/.bashrc ফাইলে অন্তর্ভুক্ত করা উচিত। ফাইলের শেষে এটি যুক্ত করা ভাল যাতে এটির উপলব্ধ সামগ্রীর সাথে উত্তেজনা না হয়, এটি সম্ভবত ঠিক কাজ করছে।
উবুন্টুতে ~/.bashrc খুলতে, টার্মিনালে কমান্ড প্রম্পটে নিম্নলিখিতটি টাইপ করুন এবং এন্টার টিপুন:
$ন্যানো~/.bashrcযেখানে ন্যানো টেক্সট এডিটর। এখানে, ন্যানো একটি কমান্ড (এক্সিকিউটেবল), যার যুক্তি হল, ~/.bashrc। টার্মিনাল উইন্ডো ওভারলে করার জন্য ফাইলের বিষয়বস্তু টেক্সট এডিটরে খুলতে হবে।
Editor/.bashrc ফাইলটি টেক্সট এডিটরে খুলবে, সম্ভবত একটি কালো পটভূমি সহ। কার্সার উপরের বাম কোণে ঝলকানো হবে।
কার্সারটি ফাইলের শেষ পর্যন্ত না পৌঁছানো পর্যন্ত কিবোর্ডে ক্রমাগত ডাউন-অ্যারো কী টিপুন। একটি নতুন লাইন যোগ করুন,
$রপ্তানি পথ=/বাড়ি/জন/dir1/dir2:$ পথএটাই সব নয়। ।/.Bashrc ফাইলে পরিবর্তন সংরক্ষণ করা হয়নি। পরিবর্তন করা ফাইলটি সংরক্ষণ করার জন্য, Ctrl+o টিপুন এবং প্রদর্শিত অন্যান্য নির্দেশাবলী অনুসরণ করুন। পাঠ্য সম্পাদক থেকে প্রস্থান করার জন্য, Ctrl+x টিপুন, এবং সাধারণ টার্মিনাল উইন্ডোটি পাঠ্য সম্পাদক উইন্ডোটি প্রতিস্থাপন করবে। অন্যান্য শেল কমান্ড জারি করা যেতে পারে।
যদি echo $ PATH জারি করা হয়, তবে নতুন ডিরেক্টরি ডিসপ্লেতে দেখা যাবে না। এখান থেকে চালিয়ে যাওয়ার দুটি উপায় রয়েছে: হয় কম্পিউটার পুনরায় বুট করুন, অথবা command/.bashrc ফাইলের নতুন বিষয়বস্তু সোর্স কমান্ড দিয়ে মেমরিতে নিয়ে যান। সোর্স কমান্ডটি ব্যবহার করা সহজ, নিম্নরূপ:
$সূত্র~/.bashrcযদি পুনরায় বুট না করে সোর্স কমান্ড জারি করা হয়, তাহলে echo $ PATH ফলাফল (প্রদর্শন) এ যোগ করা নতুন ডিরেক্টরি দেখাবে। আগ্রহের কমান্ডটি পূর্ববর্তী পথ ছাড়াই টাইপ করা যেতে পারে।
বিঃদ্রঃ: PATH মান (তালিকা) এবং ~/.bashrc ফাইলের শেষের মধ্যে বিভ্রান্ত করবেন না। এছাড়াও, মেমরিতে PATH এর একটি ডিরেক্টরি এবং হার্ডডিস্কের ডিরেক্টরিতে একটি এক্সিকিউটেবল ফাইলের মধ্যে বিভ্রান্ত করবেন না।
উপসংহার
PATH হল লিনাক্স শেলের একটি অন্তর্নির্মিত পরিবর্তনশীল। PATH এর মান হল কোলন দ্বারা পৃথক ডিরেক্টরিগুলির একটি তালিকা। এই প্রতিটি ডিরেক্টরিগুলির জন্য হার্ড ডিস্কে একটি কমান্ড (এক্সিকিউটেবল ফাইল) রয়েছে। যদি কোন কমান্ড বিক্রয়ের পূর্বে পাথ দিয়ে না দিয়ে জারি করা হয়, তাহলে শেল কমান্ডের জন্য এই ডিরেক্টরিগুলি দেখবে। যদি এটি কোনও ডিরেক্টরিতে কমান্ডটি না দেখে তবে কমান্ডটি কার্যকর করা হবে না। এই ক্ষেত্রে, কমান্ডটি চালানোর জন্য, কমান্ডটি তার পথের আগে থাকতে হবে। PATH ভ্যালুতে কমান্ড একাধিক ডিরেক্টরিতে থাকতে পারে। যত তাড়াতাড়ি শেল কমান্ডটি থাকা প্রথম ডিরেক্টরিটি দেখে, এটি কমান্ডটি চালায়। PATH মান আসলে একটি স্ট্রিং যা কোলন দ্বারা পৃথক করা ডিরেক্টরি নিয়ে গঠিত।
সমস্যা হল কিভাবে PATH এ একটি নতুন অ্যাপ্লিকেশনের এক্সিকিউটেবলের জন্য ডিরেক্টরি যোগ করা যায়। কিছু ক্ষেত্রে, এটি নতুন অ্যাপ্লিকেশন ইনস্টল করার প্রোগ্রাম দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়। অন্যান্য ক্ষেত্রে, এটি ম্যানুয়ালি করতে হবে। ম্যানুয়ালি এটি করার দুটি উপায় রয়েছে, যাকে বলা হয়: অস্থায়ী সংযোজন এবং স্থায়ী সংযোজন। সাময়িক সংযোজন এক্সপোর্ট কমান্ড ব্যবহার করে এবং কম্পিউটার চালু থাকা অবস্থায় শুধু ডিরেক্টরি যোগ করে। স্থায়ী সংযোজনটি ভবিষ্যতের ক্রিয়াকলাপের জন্য export/.bashrc ইনিশিয়ালাইজেশন ফাইলে (ব্যাশ) রপ্তানি কমান্ড লাইন সংরক্ষণ করতে হবে।