পথের উদ্দেশ্য কী?
এটি আপনার শেল প্রোগ্রামগুলি কীভাবে সন্ধান করে। যখন আপনি টাইপ ls, উদাহরণস্বরূপ, নামক একটি প্রোগ্রাম চলছে যে lsযার বসবাস /binম্যাক OS X তোমার শেল শুধুমাত্র খুঁজে পেতে পারে কারণ সহ সবচেয়ে সিস্টেম, উপর /binরয়েছে PATH।
শেলটি PATHবাম থেকে ডানে ক্রমানুসারে প্রোগ্রামগুলির জন্য অনুসন্ধান করে । যদি lsআপনার সিস্টেমে দুটি প্রোগ্রাম থাকে এবং তাদের ডিরেক্টরিগুলি উভয়ই আপনার PATHহয় তবে এটি আপনার তালিকাভুক্ত ডিরেক্টরিতে প্রথমটি খুঁজে পাবে PATH।
/ ইত্যাদি / পাথ এবং ~ /। ব্যাশ_ প্রোফাইলের মধ্যে পার্থক্য কী
সেট করা পাথগুলি ম্যাক ওএস এক্সের সমস্ত শেলের শুরুতে /etc/pathsযুক্ত করা হয় PATH।
~/.bash_profileপ্রারম্ভকালে বাশ দ্বারা চালিত কয়েকটি শেল স্ক্রিপ্টগুলির মধ্যে একটি এবং এগুলির বেশ কয়েকটি বাশ-নির্দিষ্ট are অতএব, আপনি যদি নিজের শেলটি পরিবর্তন করেন - ম্যাক ওএস এক্স এছাড়াও জাহাজ tcshএবং zshউদাহরণস্বরূপ - /etc/bashrcআপনার নতুন শেলটিতে প্রযোজ্য নয় এমন পরিবর্তনগুলি ।
এছাড়াও, /etc/pathsসিস্টেম-স্তরের কনফিগারেশন ফাইল, যখন ~/.bash_profileপ্রতি ব্যবহারকারী হয়। আপনার ম্যাকটিতে যদি আপনার একাধিক ইন্টারঅ্যাকটিভ ব্যবহারকারী সেট আপ থাকে তবে আপনি /etc/pathsযে ডিরেক্টরিগুলি প্রত্যেকের কাছে উপস্থিত হতে চান না তাতে ডিরেক্টরি যুক্ত করতে চান না PATH। একই কথাটি অবশ্যই সত্য /etc/bashrc, কেবলমাত্র বাশকে তাদের শেল হিসাবে ব্যবহার করা ব্যবহারকারীদের ক্ষেত্রে প্রযোজ্য।
PATH এবং AT PATH এবং $ AT पथ between এর মধ্যে পার্থক্য কী?
আপনি ভেরিয়েবলটি সেট করার সময় আপনি সাধারণত সিগিল ছাড়াই চলকটি দেখতে পান। স্ট্রিং FOO=barএ FOOপরিবেশ পরিবর্তনশীল সেট করে bar। আপনি যদি টাইপ করেন set, শেলটি আপনাকে সমস্ত পরিবেশের ভেরিয়েবল প্রদর্শন করবে এবং সেই ক্ষেত্রে আপনি কোনও সিগিল ছাড়াই ভেরিয়েবলটি দেখতে পাবেন।
$PATHএবং ${PATH}সাধারণত পরিবর্তিত হয়। তারা শেলটিকে বর্তমান PATHভেরিয়েবলের মান স্থানে প্রসারিত করতে বলে । পার্থক্যটি কীভাবে আপনি কোথায় ব্যবহার করবেন তা নিয়ে has উদাহরণ স্বরূপ:
$ FOO=bar
$ echo $FOO
bar
$ echo $FOOx
$ echo ${FOO}x
barx
দ্বিতীয় echoকমান্ডে, শেলটি কিছু প্রিন্ট করে না কারণ এটি শেলটিকে একটি ভেরিয়েবল নামক প্রিন্ট করতে বলে FOOx, যা বিদ্যমান নেই; শেলটি অস্তিত্বের ভেরিয়েবলগুলি খালি হিসাবে বিবেচনা করে। যেহেতু তৃতীয়টি echoকোঁকড়া ধনুর্বন্ধনী সিনট্যাক্স ব্যবহার করে, এটি শেলটিকে দেখতে দেয় যে আপনি FOOভেরিয়েবলটির জন্য অনুরোধ করছেন এবং xএটি অন্য একটি অক্ষর যা আপনি পরবর্তীতে মুদ্রণ করতে চান।
কোঁকড়ানো ধনুর্বন্ধনী ছাড়াই একই প্রভাব পেতে আরও একটি উপায় আছে, উপায় দ্বারা:
$ echo "$FOO"x
barx
পরিবেশের ভেরিয়েবলগুলি ডাবল-কোটগুলিতে প্রসারিত হয় এবং কোটগুলি xপরিবর্তনশীল প্রসার থেকে পৃথক হয় যাতে শেলটি সঠিক কাজ করে।
আমি FOOএখানে পরিবেশের পরিবর্তনশীলটি কেবল স্পষ্টতার জন্য ব্যবহার করছি । আমি উপরে যা কিছু লিখেছি তা ঠিক একইভাবে প্রযোজ্য PATH, যেহেতু এটি কেবল অন্য পরিবেশের পরিবর্তনশীল। উদাহরণ পাঠ্যগুলি কেবল আরও দীর্ঘ হবে।
পাথ রফতানি বলতে কী বোঝায়? আমরা কখন রফতানি করব?
উপরের FOOউদাহরণটি গ্রহণ করে , আপনি যদি অন্য কোনও প্রোগ্রাম চালনা করেন তবে FOOএটি রফতানি না হওয়ায় চলকটি দেখতে পাবেন না । এটি কেবলমাত্র একটি শেলের উদাহরণের মধ্যে থাকে:
$ echo $FOO
bar
$ bash
$ echo $FOO
$ exit
$ export FOO
$ bash
$ echo $FOO
bar
আমি bashইতিমধ্যে যখন আমি ইতিমধ্যে ব্যবহার করেছি তার অধীনে একটি নতুন শেল চালাচ্ছি , তারপরে এর মানটি দেখানোর চেষ্টা করুন FOO, আমি একটি ফাঁকা পেতে পারি কারণ FOOসাব-প্রোগ্রামগুলি দেখার জন্য রফতানি হয়নি। তারপরে আমি দ্বিতীয় bashউদাহরণটি থেকে বের হয়েছি , এটি রফতানি করেছি, bashআবার দৌড়েছি , এবং এখন দ্বিতীয় দৃষ্টান্তটির মানটি দেখে FOO।
আপনি exportযখন শেল-তে মান সেট করা সাব-প্রোগ্রামগুলি চান তা ব্যবহার করুন এবং আপনি যখন এটিটি চান না তখন এটি ব্যবহার করবেন না।
সাধারণত আমি শেল স্ক্রিপ্টগুলিতে অস্থায়ী পরিবর্তনগুলি রফতানি করি না, কারণ আমি শেল স্ক্রিপ্ট থেকে প্রোগ্রামগুলি কীভাবে চালিত হয় তা পরিবর্তন করতে চাই না।
আমি আপনার অন্য প্রশ্নের কোনও উত্তর দিতে যাচ্ছি না। আপনার একবারে কেবল একটি প্রশ্ন করার কথা। আমি কেবল এগুলিকে উত্তর দিয়েছি কারণ তারা অস্পষ্টভাবে সম্পর্কিত। বাকি সমস্ত একটি পৃথক প্রশ্নে অন্তর্ভুক্ত।