Zsh এর সাথে $ পথ এবং $ PATH (ছোট হাতের তুলনায় বড় হাতের) মধ্যে পার্থক্য কী?


13

ইন FreeBSD 'র 12, ব্যবহার zshশেল, আমি যখন এ খুঁজছেন এই পার্থক্য লক্ষ্য $path(ছোট হাতের) বনাম $PATH(বড় হাতের)।

echo $path

/ এসবিন / বিন / ইউএসআর / এসবিন / ইউএসআর / বিন / ইউএসআর / স্থানীয় / এসবিন / ইউএসআর / স্থানীয় / বিন / ইউএসআর / হোম / ফ্রিএসডি / বিন

echo $PATH

পক্ষ থেকে / sbin: / বিন: / usr / sbin / usr / বিন / usr / স্থানীয় পক্ষ থেকে / sbin / usr / স্থানীয় / বিন / usr / হোম / FreeBSD / বিন

একটি আউটপুট স্পেস অক্ষর দ্বারা সীমিত করা হয়, অন্যটি COLON অক্ষর দ্বারা।

কেন পার্থক্য?

এই দুটি পৃথক, পৃথক পরিবর্তনশীল? বা ছোট হাতের অক্ষর / বড় হাতের ধরণের একধরনের কৌশল বা মানে যা আমি জানি না?

এটি কি একটি zshবৈশিষ্ট্য? বা ফ্রিবিএসডি-র একটি বৈশিষ্ট্য?


1
অন্যদিকে: কোনও পসিক্স-কমপ্লায়েন্ট শেল-এ, কোনও ছোট হাতের অক্ষরের সাথে পরিবর্তনশীল নামগুলি অ্যাপ্লিকেশন ব্যবহারের জন্য নিরাপদে গ্যারান্টিযুক্ত হয় (পরিবর্তিত হলে নিঃশব্দে শেল বা সিস্টেমের আচরণটি পরিবর্তন করতে না পারে)। এটি সেই জায়গাগুলির মধ্যে যেখানে zsh এর সিদ্ধান্তটি কেবল সেই মান অনুসরণ করে যেখানে এটি তাদের কাছে বোঝা যায় সেখানে স্ক্রিপ্ট লেখকদের জন্য মাথাব্যথা তৈরি করতে পারে, কারণ মানকৃত গ্যারান্টিগুলি প্রয়োগ হয় না।
চার্লস ডাফি

@ চার্লসডুফি কি আপনার নিম্ন মানের এবং আপার কেস ভেরিয়েবলগুলি সম্পর্কে কোনও কিছু বলার সাথে স্ট্যান্ডার্ডের অংশটির একটি লিঙ্ক আছে? ধন্যবাদ।
মস্কি

@ মোসবি, pubs.opengroup.org/onlinepubs/9699919799/basedefs/… - শেল এবং এনভায়রনমেন্ট ভেরিয়েবলগুলি একটি একক নামস্থান ভাগ করে রাখার বিষয়টি মনে রেখে এটি পড়ুন (শেল ভেরিয়েবল সেট করে কোনও বিদ্যমান-জাতীয় পরিবেশের ভেরিয়েবলের মান আপডেট করে; পরিবেশের ভেরিয়েবল সেট করা শেল ভেরিয়েবলকে আরম্ভ করে)। নির্দিষ্ট লাইন: ছোট ছোট অক্ষরযুক্ত পরিবেশের পরিবর্তনশীল নামের নামের স্থানটি অ্যাপ্লিকেশনের জন্য সংরক্ষিত। অ্যাপ্লিকেশনগুলি স্ট্যান্ডার্ড ইউটিলিটির আচরণ পরিবর্তন না করে এই নাম স্থান থেকে নামের সাথে যে কোনও পরিবেশের ভেরিয়েবলকে সংজ্ঞায়িত করতে পারে।
চার্লস ডাফি

@ চার্লসডফি যা এখানে প্রয়োগ হয় না। সেট pathভিতরে zshকোন আপডেট করবে না pathenvvar: path=junk zsh -c 'echo $path; path=garbage; /usr/bin/printenv path'
মস্কি

@ মোসবি, আপনি আমাকে নিশ্চিত করেছেন যে এটি মানের চিঠিটি লঙ্ঘন করে না। আত্মা , অপরপক্ষে, করতে হবে for path in "$dir"/*reflexively নিরাপদ টু লেখার কোড।
চার্লস ডাফি

উত্তর:


20

এটি / zshথেকে উত্তরাধিকার সূত্রে প্রাপ্ত বৈশিষ্ট্য ।cshtcsh

$path অ্যারে পরিবর্তনশীল হয় বাঁধা থেকে $PATH স্কালে (STRING) পরিবর্তনশীল। একের যে কোনও পরিবর্তন অন্যটিতে প্রতিফলিত হয়।

ইন zsh(বিপরীত (t)csh), আপনি ব্যতীত অন্যান্য ভেরিয়েবল গিঁট করতে $PATHসঙ্গে typeset -T। কোলন-বিচ্ছিন্ন স্কেলারের জন্য বড় হাতের নাম এবং অ্যারের জন্য ছোট হাতের অক্ষরে একই নাম ব্যবহার করা এটি প্রচলিত, তবে বাধ্যতামূলক নয়। কোলন যখন ডিফল্ট বিভাজক হয়, অন্য বিভাজকগুলি ব্যবহার করা যেতে পারে (উদাহরণস্বরূপ একটি অ্যারেতে একটি বহু-লাইন স্ট্রিং বাঁধার জন্য নিউলাইন, অথবা একটি অ্যারেতে সিএসভি সারি বেঁধে কমা)

এর সাম্প্রতিক সংস্করণগুলিতে zsh, typeset -p PATHবা typeset -p pathদুটি ভেরিয়েবলের মধ্যে লিঙ্কটি দেখায়:

% typeset -p path
typeset -aT PATH path=( /home/chazelas/bin /usr/local/bin /usr/bin /bin )

এটি দরকারী যে এটি মুছে ফেলা উপাদানগুলি বা লুপগুলিকে যুক্ত করা আরও সহজ করে তোলে।

একটি এরকম typeset -U pathউপাদানের করতে অনন্য এছাড়াও পালন করতে সাহায্য করে $PATHপরিবর্তনশীল পরিষ্কার (কিছু অনুরূপ অর্জন করা যেতে পারে tcshসঙ্গে set -f)।

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