পথের উদ্দেশ্য কী?
এটি আপনার শেল প্রোগ্রামগুলি কীভাবে সন্ধান করে। যখন আপনি টাইপ 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
যখন শেল-তে মান সেট করা সাব-প্রোগ্রামগুলি চান তা ব্যবহার করুন এবং আপনি যখন এটিটি চান না তখন এটি ব্যবহার করবেন না।
সাধারণত আমি শেল স্ক্রিপ্টগুলিতে অস্থায়ী পরিবর্তনগুলি রফতানি করি না, কারণ আমি শেল স্ক্রিপ্ট থেকে প্রোগ্রামগুলি কীভাবে চালিত হয় তা পরিবর্তন করতে চাই না।
আমি আপনার অন্য প্রশ্নের কোনও উত্তর দিতে যাচ্ছি না। আপনার একবারে কেবল একটি প্রশ্ন করার কথা। আমি কেবল এগুলিকে উত্তর দিয়েছি কারণ তারা অস্পষ্টভাবে সম্পর্কিত। বাকি সমস্ত একটি পৃথক প্রশ্নে অন্তর্ভুক্ত।