PATH = কিছু রফতানি করে: AT পথ মানে?


27

আমি লিনাক্সে খুব নতুন এবং আমি .profileআমার হোম ফোল্ডারের নীচে ফাইলের শেষে নীচের কমান্ডটি রেখেছি:

export PATH="~/.composer/vendor/bin:$PATH"

আমি উইন্ডোজ থেকে পরিবেশের ভেরিয়েবল এবং তাদের মানগুলি সম্পর্কে কিছুটা জানি তবে এই ক্ষেত্রে আমি বুঝতে চাই যে এই আদেশটি কী করে এবং এর মধ্যে যে অংশগুলি রয়েছে সেগুলি কী:

  1. শুরুতে এই "রফতানি" বাক্যটি কী? এটি কি বাশের জন্য উপলব্ধ ডেটা রফতানি করে?

  2. প্রথমটি কী PATHএবং দ্বিতীয়টি কী $PATHএবং কেন আমাদের দুটি প্রয়োজন?


ওএসের মধ্যে কিছু প্রযুক্তিগত পার্থক্য একদিকে রেখে, এটি উইন্ডোজে এই প্রক্রিয়াটির সমতুল্য: উইন্ডোজিটপ্রো.সি.সিস্টেমস
-

1
"এক্সপোর্ট" পরিবর্তনটিকে ব্যাশ দ্বারা চালু নতুন প্রোগ্রামগুলিতে দৃশ্যমান করে তোলে।
থোরবজর্ন রাভন অ্যান্ডারসন

1
@ থরবজর্নআরভানএন্ডারসেন: না, আপনি exportকমান্ডটি ব্যবহার করবেন কিনা তা PATHহ'ল কারণ ভেরিয়েবলটি ইতিমধ্যে রফতানি হিসাবে চিহ্নিত হয়েছে is (আপনি যদি আমাকে বিশ্বাস না করেন তবে উভয় উপায়ে চেষ্টা করুন!)
ডেভিড

উত্তর:


39

শুরুতে এই "রফতানি" বাক্যটি কী?

exportএকটি কমান্ড (আরও স্পষ্টতই এটি একটি বাশ বিল্টিন , অর্থাত্ এটি কোনও এক্সিকিউটেবল উপস্থিত নয় PATH, এটি একটি কমান্ড যা বাশ নিজেই অন্তর্নির্মিত ছিল)।

এটি কি বাশের জন্য উপলব্ধ ডেটা রফতানি করে?

exportঅ্যাসাইনমেন্টের বাম দিকে পরিবেশের পরিবর্তনশীলকে অ্যাসাইনমেন্টের ডানদিকে মান হিসাবে সেট করে; এ জাতীয় পরিবেশের পরিবর্তনশীল প্রক্রিয়াটি এটি সেট করে এবং একই পরিবেশে উদ্ভূত সমস্ত উপ-প্রসেসের জন্য দৃশ্যমান, যেমন বাশ উদাহরণের ক্ষেত্রে ~/.profileএকই উত্সে উত্সিত উত্স এবং সমস্ত উপ-প্রসেসের ক্ষেত্রে (যার মধ্যে রয়েছে অন্যান্য শেলও অন্তর্ভুক্ত থাকতে পারে) , যার ফলে এটি অ্যাক্সেস করতে সক্ষম হবে)।

প্রথমটি কী PATHএবং দ্বিতীয়টি কী $PATHএবং কেন আমাদের দুটি প্রয়োজন?

PATHউপরে বর্ণিত হিসাবে প্রথমটি হল পরিবেশের পরিবর্তনশীলটি ব্যবহার করে সেট করা export

যেহেতু PATHযখন স্বাভাবিকভাবে কিছু রয়েছে ~/.profile(ডিফল্ট এটা রয়েছে দ্বারা sourced হয় /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games), কেবল স্থাপনের PATHজন্য ~/.composer/vendor/binহবে PATHশুধুমাত্র ধারণ ~/.composer/vendor/bin

সুতরাং যেহেতু কমান্ডের ভেরিয়েবলের রেফারেন্সগুলি কমান্ডের মূল্যায়নের সময় বাশের দ্বারা ভেরিয়েবলের মান (বা "প্রসারিত") দ্বারা প্রতিস্থাপিত হয় , তাই :$PATHনির্ধারিত মানটির শেষে স্থাপন করা হয় যার PATHফলে PATHসমাপ্ত হয় ~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games( অর্থাৎ যা PATHইতিমধ্যে ~/.composer/vendor/bin:শুরুতে প্লাস রয়েছে )।


ভয়ানক ব্যাখ্যা।
কোয়েলটন বি। হিগগিনবটম

16

https://help.ubuntu.com/commune/En ماحولياتي ভেরিয়েবলগুলি সম্ভবত আপনাকে সহায়তা করবে। এছাড়াও man bashবুঝতে সঙ্গে খুব সহায়ক হতে পারে কিভাবে (ব্যাশ অন্তত) যে কাজ

যাইহোক - PATH=আপনি মূলত PATHভেরিয়েবলটি সেট করছেন , অনুসন্ধানের জন্য কিছু নতুন পাথ যুক্ত করেছেন, ইতিমধ্যে ইতিমধ্যে / পূর্বে নির্ধারিত পথগুলি যুক্ত করেছেন $PATH(যা মূলত PATHভেরিয়েবলের একটি উল্লেখ )।

সুতরাং, বলুন যে আপনার PATHএতদূর এমন কিছু স্থাপন করা হয়েছিল:

PATH="x:y:z"

এবং তারপর আপনি সেট

PATH="a:b:c:$PATH"

আপনার PATHপরে এর মত হবে:

a:b:c:x:y:z

আমি আশা করি যে এটি উপলব্ধি করে।

এবং তারপরে আপনি নতুন পরিবর্তনশীল রফতানি করেন যাতে এটি আপনার পরিবেশে চাইল্ড প্রসেস / সাবশেলগুলি সহও পরিচিত।

কেবল সচেতন থাকুন যে ডিরেক্টরিগুলি সেট করা হিসাবে ক্রম PATHগুরুত্বপূর্ণ হতে পারে। এবং এর মতো কিছু PATH="$PATH:a:b:c"আপনাকে ফলাফল দেবে:

x:y:z:a:b:c

যা কমান্ড সন্ধান করার সময় ডিরেক্টরি / পথের ক্রমকে প্রভাবিত করবে (যদি আপনার একাধিক ডিরেক্টরিতে আপনার কমান্ড থাকে তবে প্রথম সন্ধান পাওয়া যাবে - যা আপনাকে মাঝে মাঝে কিছু অপ্রত্যাশিত ফলাফল দিতে পারে)।


2

কমান্ডটি এখানে দেওয়া হয়েছে যাতে বুলেট পয়েন্টগুলি দিয়ে যাওয়ার সময় প্রত্যেকে অনুসরণ করতে পারে। export PATH="~/.composer/vendor/bin:$PATH"

  • export শেল বিল্ট-ইন (যার অর্থ নেই) /bin/export , এটি একটি শেল জিনিস) কমান্ড মূলত পরিবেশগত পরিবর্তনশীলগুলি থেকে প্রাপ্ত অন্যান্য প্রোগ্রামগুলিতে bash(অতিরিক্ত পঠন সম্পর্কিত লিঙ্কিত প্রশ্নটি দেখুন) এবং সাবশেলগুলি উপলব্ধ করে।
  • শেল অ্যাসাইনমেন্টটি প্রথমে প্রসারণ গ্রহণ করবে, তারপরে দ্বিতীয় স্থান নির্ধারণ করা হবে। সুতরাং ডাবল উদ্ধৃতিগুলির মধ্যে যা রয়েছে তা প্রথমে প্রসারিত হবে savedPATH পরে পরিবর্তনশীলে হয়।
  • $PATHএটি হ'ল ডিফল্ট PATHঅ্যাসাইনমেন্ট (বা কম্যান্ডে কম্যান্ডের মতো দেখতে যতক্ষণ পর্যন্ত না এই কমান্ডটি আপনার মধ্যে প্রদর্শিত হয়).bashrc বা .profile), এবং এটি প্রসারিত।
  • ~/.composer/vendor/bin প্রসারিত হতে চলেছে /home/username/.composer/vendor/bin.composerনেতৃস্থানীয় ডটের কারণে লুকানো ফোল্ডারটি যেখানে ।
  • যে সংক্ষিপ্ত ~/.composer/vendor/bin:$PATH এখন আলাদা করে ফোল্ডারের দীর্ঘ তালিকায় রূপান্তরিত হয়েছে :। সমস্ত কিছুই ডাবল কোটে বিভক্ত থাকে যাতে আমরা তাদের পথে ফাঁকা স্থান সহ ফোল্ডারগুলি অন্তর্ভুক্ত করি।
  • সবশেষে PATHপরিবর্তনশীল এবং বহিরাগত কমান্ডগুলিতে এটি ব্যবহারের অনুমতি দেওয়া হয় everything

সাধারণ উদাহরণ

আমার ইন্টারেক্টিভ শেলটি আসলে mksh, যা exportঅন্তর্নির্মিত অবস্থায় ঘটে । exportসেট করতে ব্যবহার করে VAR, আমার চলকটি পরবর্তী কমান্ড / সাবপ্রসেসিসের চেইন দ্বারা প্রেরণ এবং ব্যবহার করা যেতে পারে, যেখানে আমি সেই একই চলকটি রফতানি করেছি

$ echo $SHELL            
/bin/mksh
$ VAR="HelloAskUbuntu"
$ bash -c 'echo $VAR' 
$ export VAR="HelloAskUbuntu"                                                  
$ bash -c 'echo $VAR'                                                          
HelloAskUbuntu
$ 

অতিরিক্ত পড়া


3
না, ~~/.composer/vendor/binসম্প্রসারিত করা হবে না! টিলডটি কেবলমাত্র কয়েকটি নির্দিষ্ট জায়গায় প্রসারিত হয়, যেমন সরাসরি =চিহ্নের পরে । PATH="~/.foo:$PATH"ফলাফল ~/.foo:/other/path/dirs...। তবে এর ~প্রসারিত হবে PATH=~"/.foo:$PATH", যার ফলস্বরূপ /home/user/.foo:/other/path/dirs...
ভোলকার সিগেল

2

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

প্রাথমিক তথ্য

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

ম্যাপিং

export PATH="~/.composer/vendor/bin:$PATH"

ইব "PATH" এর মূল মূল্যটি উবুন্টু 15.10 এর সাথে আসে is

/usr/bin:/usr/sbin

কমান্ড নিজেই নোটে আমাদের দুটি PATH বাক্যাংশ রয়েছে। সর্বশেষটি হ'ল $ পথ - দ্য $ "আপনার পাশের ইভি এর মূল মান বা মানগুলি মুদ্রণ করুন"; এর পাশের EV হ'ল PATH EV EV

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

রফতানির পাশাপাশি আমরা এটিকে প্রসারিতও করেছি: প্রথম পাঠ্য বাক্যাংশ (PATH =) আমাদের মূল মানের (~ /। কমপোজার / বিক্রেতা / বিন :) যোগ করার জন্য ব্যবহার করেছিল (used PATH দ্বারা উপস্থাপিত)।

  • উপরের অনুচ্ছেদে আমি উল্লিখিত নতুন মানের শেষে কর্নেল (:) নতুন মানটিকে মূল থেকে আলাদা করতে ব্যবহার করে।

  • "" অঞ্চলটি যেখানে মান / গুলি থাকে s

  • ~ হ'ল হোম ফোল্ডার।


আমি আশা করি আমি এই ম্যাপিংয়ের পরে কমান্ডটি আমার মতো নতুনদের কাছে আরও পরিষ্কার হবে।


1

exportকমান্ড ভেরিয়েবল subshells পাওয়া তোলে। এটি হল, এটি ছাড়া, পরিবর্তনশীলPATH এগুলি সাবশেলে দৃশ্যমান হবে না।

PATH দু'বার উল্লেখ করা হয়েছে:

  • চলক হিসাবে মানটি নির্ধারিত হচ্ছে, বামে left = চিহ্নটি ।
  • পরিবর্তনশীল নামটি =চিহ্নের পরিবর্তে তার মান অনুসারে প্রতিস্থাপিত হচ্ছে । এটি পুরানো মানকে নতুন মানের অংশ করে তোলে।

1
"এটি হ'ল PATHএগুলি ছাড়া ভেরিয়েবল সাবশেলে দৃশ্যমান হবে না।" এটি ভুল; PATHএকজন পরিবেশ পরিবর্তনশীল (যা একটি যেমন পুরোপুরি একই জিনিস না শেল পরিবর্তনশীল) যাতে এটি স্বয়ংক্রিয়ভাবে রপ্তানি করা হয়, এবং exportকমান্ড অপ্রয়োজনীয়।
ডেভিড

বোর্ন শেল পরিবার শেল এবং এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে সত্যিই পার্থক্য করে না। ( sc.tamu.edu/help/general/unix/vars.html ) আমার সিস্টেমে (আর্চ লিনাক্স), বাশ এমনকি setenvকমান্ডটি জানেন না ।
রেক্সকোগিটানস

1
কার্বনাল সম্পর্কে জেনে রাখা পরিবেশের পরিবর্তনশীলগুলির মধ্যে পার্থক্য রয়েছে এবং শ্যাশ ভেরিয়েবলগুলি যা ব্যাশের অভ্যন্তরীণ। যেহেতু PATHপরিবেশ থেকে উদ্ভূত, এটি স্বয়ংক্রিয়ভাবে রফতানি করা হয়, তাই আপনার exportবাচ্চাদের প্রক্রিয়াগুলিতে প্রচার করার জন্য পরিবর্তনের জন্য চালানোর দরকার নেই (আপনি যে পৃষ্ঠাটি যুক্ত করেছেন তার বিপরীতে)।
ডেভিড

পরিবেশের ভেরিয়েবলগুলি কার্নেলের সম্পত্তি নয়, তবে প্রক্রিয়াটির। যেহেতু আমরা এখানে যে প্রক্রিয়াটির কথা বলছি তা হ'ল sh, বাশ (উবুন্টু কি zsh ব্যবহার করে?), আমি মনে করি আমরা তাদেরকে শেল ভেরিয়েবলের সমান হতে পারি। তবে অবশ্যই, শেল ভেরিয়েবলগুলি পরিবেশের ভেরিয়েবলগুলি হিসাবে কোনও এলোমেলো প্রোগ্রামগুলিতে দেওয়া হয় না।
রেক্সকোগিটানস

আমি মনে করি আমরা এই মুহুর্তে শব্দার্থবিদ্যায় জড়িয়ে যাচ্ছি। আমি যা বলার চেষ্টা করছিলাম তা হ'ল বাশ, PATH=fooএবং export PATH=fooঅভিন্ন আচরণ।
ডেভিড

0
export PATH="~/.composer/vendor/bin:$PATH"
  1. দ্য exportবাশ-এর ​​বিল্টিন কমান্ড, রফতানি ভেরিয়েবলকে এনভায়ারমেন্ট ভেরিয়েবল হতে হবে। (আপনি help exportআরও ঝুঁকে টাইপ করতে পারেন

    (ক্যারেক্টাররা কমান্ডটি অনুসরণ করে পরামিতিগুলি হয়, স্থান দ্বারা বিভক্ত হয়, সুতরাং এক্ষেত্রে কেবলমাত্র একটি পরামিতি রয়েছে)

  2. PATHপরিবর্তনশীল নাম, সাধারণত পূর্বনির্ধারিত ব্যাশ দ্বারা varibale, বড় হাতের নামে হয়।

  3. =এই পরিবর্তনশীল নির্ধারিত মান মানে।

  4. সমস্ত স্ট্রিং ভেরিবেলের মান

  5. $PATHব্যাশ এর funciton এক ধরনের নাম variable expantion, ব্যাশ থাকবেই মান প্রতিস্থাপন করবে PATH, প্যারামিটার স্ট্রিং আগে স্ট্রিং পাঠাতে exportকমান্ড

  6. :যে এই পরিবর্তনশীল ব্যবহার করতে চান সব অ্যাপ্লিকেশন দ্বারা পাথ পরিবর্তনশীল এবং understooded একটি spcial গৃহস্থালির কাজ হবে। এর অর্থ পৃথকীকরণকারী। সুতরাং তাদের PATH ভেরিয়েবলের অনেকগুলি ডিরেক্টরি থাকবে।

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