এই আদেশের অর্থ কি কেউ ব্যাখ্যা করতে পারেন?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
এই আদেশের অর্থ কি কেউ ব্যাখ্যা করতে পারেন?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
উত্তর:
${GZIP_BINDIR-'/bin'}একটি bashপ্যারামিটার সম্প্রসারণ নিদর্শন। থেকে man bash:
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise, the value of parameter
is substituted.
এই অংশটির অব্যবহিত পূর্বে ম্যান পেজে রয়েছে (অবহিত করার জন্য @ জাওদদারকে ধন্যবাদ):
Omitting the colon results in a test only for a parameter that is unset.
ম্যানপেজটি যেমন বলেছে, এটি ভেরিয়েবলের ডিফল্ট মান সেট করবে GZIP_BINDIR। যদি GZIP_BINDIRপূর্বে কোনও মান সেট থাকে (আপনি ব্যবহার করছেন না এমনভাবে নাল ব্যতীত :) তবে সেই মানটি ব্যবহৃত /binহবে , অন্যথায় ভেরিয়েবলের মান হিসাবে ব্যবহৃত হবে GZIP_BINDIR।
অন্যদিকে আপনি যদি নাল মানগুলিরও পরীক্ষা করতে চান তবে এই প্যাটার্নটি ব্যবহার করুন (অন্তর্ভুক্ত করুন :):
${GZIP_BINDIR:-'/bin'}
এরপরে $PATHইচ্ছেটি আগে ধারণ করা মানগুলিতে প্রসারিত হবে। সুতরাং, যদি PATHআগে ছিল:
/usr/sbin:/usr/bin
এখন আপনার PATHইচ্ছা (বিবেচনা GZIP_BINDIRসেট করা নেই):
/bin:/usr/sbin:/usr/bin
export PATHPATHএটি সমস্ত শিশু প্রক্রিয়াগুলিতে উপলব্ধ করবে ।
:-বলেছেন: "যখন সম্প্রসারণ সাবস্ট্রিং করণ না, ফর্ম নিচে নথিভুক্ত ব্যবহার (যেমন, :-), একটি প্যারামিটার যে সেট না বা নাল জন্য ব্যাশ পরীক্ষা। কোলন ছেড়ে যাওয়া হচ্ছে আনসেট না হওয়া পরামিতিগুলির জন্য কেবলমাত্র পরীক্ষার ফলাফল ""
PATHএবং exportএকটি একক কমান্ডের সাথে একত্রিত করতে পারেন :export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
প্যারামিটার বিস্তারের ভিতরে হাইফেনের আগে আসলেই কোনও কোলন নেই ${GZIP_BINDIR-'/bin'}?
এই ধরণের কনস্ট্রাক্টটি প্রায়শই কোলনের সাথে লেখা থাকে, ${GZIP_BINDIR:-'/bin'}যার অর্থ, "যদি $ জিজেপআইবিআইএনডিআইআর নিল বা সেট না করে থাকে তবে এটি '/ বিন' এ সেট করুন"
যাইহোক, সিনট্যাক্স আপনি সরবরাহকৃত হয় বৈধ, কিন্তু বিরল। ${GZIP_BINDIR-'/bin'}(কোনও কোলন নেই) এর অর্থ, "যদি $ GZIP_BINDIR সেট না করে থাকে তবে এটি '/ বিন' এ সেট করুন। যদি এটি সেট করা থাকে (ঘোষিত হয়েছে) তবে এতে কিছু বরাদ্দ করা হয়নি (যেমন এটি NULL) কিছুই .োকানো হবে না।
যদিও কোলন যেমন একটি বাগ এখানে হতে পারে নিম্নলিখিত পরিবর্তনশীল কনস্ট্রাক্ট (...} :$ PATH- ...) হবে এখনও যদি $ GZIP_BINDIR সেট কিন্তু শূন্য সন্নিবেশিত হবে। যেহেতু এটি AT PATH এর শুরুতে একটি কোলন যুক্ত করবে, এটি বর্তমান ডিরেক্টরিটি প্রথমে অনুসন্ধানের কারণ হবে।
এটিকে সিকিউরিটি সমস্যা হিসাবে বিবেচনা করা হয় কারণ এটি কেবলমাত্র বর্তমান ডিরেক্টরিতে রেখে কেবল স্ট্যান্ডার্ড কমান্ড হিসাবে একই নামে একটি দূষিত প্রোগ্রাম চালানো সহজ করে তোলে।
যদি $ GZIP_BINDIR সেট করা থাকে তবে NULL (খালি) হয় তবে সঠিক বাক্য গঠনটি $ PATH অপরিবর্তিত রয়েছে ${GZIP_BINDIR-'/bin:'}$PATH; export PATH
$ GZIP_BINDIR হয় যদি সেট না করে সেট করা থাকে বা সেট করা থাকে তবে NULL হয় তবে সঠিক বাক্য গঠনটি $ PATH অপরিবর্তিত রয়েছে ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH
এই কমান্ডটি PATH ভেরিয়েবল আপডেট করে।
PATHডিরেক্টরি যেখানে এক্সিকিউটেবল প্রোগ্রাম অবস্থিত হয় একটি সেট উল্লেখ একটি পরিবেশ পরিবর্তনশীল।
PATH="${GZIP_BINDIR-'/bin'}:$PATH";
এটি GZIP_BINDIRপূর্বের PATH থেকে প্রস্থান করলে অন্য পরিবর্তকের মান যুক্ত করে অন্য পরিবর্তে / বিন ব্যবহার করুন এবং এটি PATH এ যুক্ত করুন
export PATH
রপ্তানি সব শিশু প্রসেসের জন্য পাথ প্রাপ্তিসাধ্য সেট করতে ব্যবহার করা হয় এবং পড়ুন subshells হয় এই সম্পর্কে আরও তথ্যের জন্য
আপনার অবশ্যই অবশ্যই লক্ষ্য রাখতে হবে যে এটি অচল নয় এবং একবার আপনি নিজের শেলটি প্রস্থান করার পরে আপনি এটিকে আলগা করবেন।
এই পাঠ্য সম্পাদনা স্থায়ী করতে আপনার নিজের মধ্যে এই লাইনগুলি যুক্ত করতে হবে .bashrc
gedit .bashrc
এবং লাইন যোগ করুন
export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
তারপর কমান্ড চালান
source .bashrc
:${GZIP_BINDIR-'/bin'}" এটিকে মিস করেছেন "অগত্যা নয়।${parameter-word}এটি বৈধ, যদিও ম্যান পৃষ্ঠায় নেই বলে মনে হচ্ছে।