ম্যাক ওএসে পাঠ কী?


12

কি PATHএকটি ম্যাক OS এ? আমি এটি বিশ্বব্যাপী কমান্ড-লাইন সরঞ্জামগুলি ইনস্টল করতে ব্যবহার করেছি, তবে কেবলমাত্র ডকুমেন্টেশনগুলি হ'ল এটি করার জন্য টিউটোরিয়াল রয়েছে , যা হুডের নীচে কী ঘটছে তার কোনও সত্য ব্যাখ্যা নেই। আমি উইকিপিডিয়ায় কোনও প্রাসঙ্গিক পৃষ্ঠাও পাইনি ।

তাহলে এর উদ্দেশ্য PATHকী /etc/pathsএবং ~/.bash_profile** এর মধ্যে পার্থক্য কী ?

উদাহরণস্বরূপ, আমার pathsফাইলে, আমি এটি দেখতে পাচ্ছি:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

তবে আমার মধ্যে ~/.bash_profile, আমি এটি দেখতে পেলাম:

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

এটি কি কেবলমাত্র pathsফাইলের জন্য কোনও ব্যবহারকারী-নির্দিষ্ট সংযোজন ? এই সব জিনিস কি pathsমত /usr/bin?


2
দয়া করে একটি পোস্টে একাধিক প্রশ্ন একত্রিত করবেন না। আপনার প্রতিটি প্রশ্নের আলাদাভাবে এখানে স্বাগত জানানো হবে তবে সমস্ত একসাথে এই জাতীয় নয়। দয়া করে এটিকে একটি প্রশ্নের মধ্যে ছাঁটাই করুন, আপনি 1 এবং 2 টি একত্রিত করতে পারেন তবে অন্যদের PATH এর সাথে বিশেষভাবে কোনও সম্পর্ক নেই। 3 এখানে উত্তর দেওয়া হয় 4 এখানে ব্যাখ্যা করা হয়েছে এবং 5 খুব ভয় করে না যে আমি ভয় পাই। বা না আপনার বোনাস প্রশ্ন, কোন ফাইল বাইনারি হয়? স্ক্রিপ্ট না।
টেরডন

আমি আমার প্রশ্নটি নীচে সম্পাদনা করেছি। এছাড়াও, আমি এই লিঙ্কগুলি সহায়ক বলে মনে করি। ধন্যবাদ।
gwg

উত্তর:


15

১. পথের উদ্দেশ্য কী?

PATHএকটি পরিবেশের পরিবর্তনশীল যা ডিরেক্টরিগুলির একটি কোলন-বিচ্ছিন্ন তালিকা ধারণ করে যেখানে আপনার শেলটি তাদের কোনও স্পষ্ট পথ সরবরাহ না করে কমান্ড লাইনে যে নাম নির্বাহযোগ্যদের জন্য অনুসন্ধান করবে সেগুলি প্রদর্শন করবে (যেমন আপনার jsdocউদাহরণ হিসাবে )। সুতরাং, যদি আপনার PATHআছে

/usr/bin:/bin:/home/bin

তারপরে আপনি নাম অনুসারে যে কোনও এক্সিকিউটেবল কল করবেন সেগুলি এই ডিরেক্টরিগুলিতে (সেই ক্রমে) অনুসন্ধান করা হবে এবং প্রথম নির্বাহযোগ্য খুঁজে পাওয়া এটিই কার্যকর হবে।

2. / ইত্যাদি / পাথ এবং ~ /। ব্যাশ_ প্রোফাইলের মধ্যে পার্থক্য কী

মতে ServerFault উপর এই প্রশ্ন , /etc/pathsসেট করতে ব্যবহৃত হয় PATH(সকল ব্যবহারকারীর জন্য অর্থাত সিস্টেম-ব্যাপী) বিশ্বব্যাপী যখন ~/.bash_profileসেট ব্যবহারকারী অনুসারে পছন্দগুলি করতে ব্যবহৃত হয় (যেখানে ~ব্যবহারকারীর হোম ডিরেক্টরির থাকবে)। যা লেখা .bash_profileআছে তা বিশ্বব্যাপী যুক্ত PATHহতে পারে /etc/pathsবা এটি সম্পূর্ণরূপে ওভাররাইড করে।

রেকর্ডটির জন্য, /etc/pathsএটি একটি ম্যাক ওএসের অদ্ভুততা বলে মনে হচ্ছে: আমি কমপক্ষে, জিএনইউ / লিনাক্সে এসেছি না।


আমি কেবল এগুলি সম্পাদনা করেছি, তবে তাদের সকলকে উত্তর দেওয়ার জন্য ধন্যবাদ!
gwg

@ggundersen আমি আপনার সম্পাদিত প্রশ্নের ফিট করতে আমার উত্তরটি ছাঁটাই করেছি।
জোসেফ আর।

@ গগনডাউন আপনি আমার উত্তর এবং /etc/pathsওএসএক্স এর লিঙ্কগুলি পড়তে চাইতে পারেন ।
টেরডন

7

পথের উদ্দেশ্য কী?

এটি আপনার শেল প্রোগ্রামগুলি কীভাবে সন্ধান করে। যখন আপনি টাইপ 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=barFOOপরিবেশ পরিবর্তনশীল সেট করে 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যখন শেল-তে মান সেট করা সাব-প্রোগ্রামগুলি চান তা ব্যবহার করুন এবং আপনি যখন এটিটি চান না তখন এটি ব্যবহার করবেন না।

সাধারণত আমি শেল স্ক্রিপ্টগুলিতে অস্থায়ী পরিবর্তনগুলি রফতানি করি না, কারণ আমি শেল স্ক্রিপ্ট থেকে প্রোগ্রামগুলি কীভাবে চালিত হয় তা পরিবর্তন করতে চাই না।

আমি আপনার অন্য প্রশ্নের কোনও উত্তর দিতে যাচ্ছি না। আপনার একবারে কেবল একটি প্রশ্ন করার কথা। আমি কেবল এগুলিকে উত্তর দিয়েছি কারণ তারা অস্পষ্টভাবে সম্পর্কিত। বাকি সমস্ত একটি পৃথক প্রশ্নে অন্তর্ভুক্ত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.