Looks PATH- তে ডিরেক্টরি যুক্ত করার পরে দেখে মনে হচ্ছে, এর উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে যুক্ত হয় না। তাহলে আমি কি এটা করতে পারি? বা এটি সমর্থিত না হওয়ার কোনও কারণ আছে?
Looks PATH- তে ডিরেক্টরি যুক্ত করার পরে দেখে মনে হচ্ছে, এর উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে যুক্ত হয় না। তাহলে আমি কি এটা করতে পারি? বা এটি সমর্থিত না হওয়ার কোনও কারণ আছে?
উত্তর:
এগুলির মতো সন্ধান করে পুনরাবৃত্তভাবে তাদের যুক্ত করুন:
PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )
সতর্কতা: প্রশ্নের মন্তব্যে উল্লিখিত হিসাবে এটি উত্সাহিত করা হয়নি কারণ এটি একটি সুরক্ষা ঝুঁকি তৈরি করে কারণ যুক্ত ডিরেক্টরিগুলির মধ্যে কার্যকরযোগ্য ফাইলগুলি দূষিত নয় এমন কোনও গ্যারান্টি নেই।
গিলসের উত্তর অনুসরণ এবং স্টো ব্যবহার করা সম্ভবত এটির থেকে ভাল সমাধান
$PATH
করা বিপজ্জনক, তবে উপ-ডিরেক্টরিগুলি যুক্ত করা খুব খারাপ নয়। তবে এটি সাধারণত অকেজো এবং সম্ভবত অদক্ষ (এবং এমনকি আপনাকে কখনও কখনও পরিবেশের আকারের সীমাতে ফেলে দেয়)।
~/bin
বা ~/scripts
) যোগ করতে পারেন , তাই তাদের সুরক্ষা একই is
~/scripts
। আমি এবং অন্য
সাধারণ ইউনিক্স ডিরেক্টরি কাঠামোটিতে অ্যাপ্লিকেশন ফাইলগুলি ডিরেক্টরি অনুসারে বাছাই করা থাকে: bin
এক্সিকিউটেবলের lib
জন্য, গ্রন্থাগারগুলির doc
জন্য, ডকুমেন্টেশনের জন্য এবং এই জাতীয়। এগুলি যখন পৃথক ডিরেক্টরিতে ইনস্টল করা হয়; প্রায়ই অ্যাপ্লিকেশন কয়েক ডিরেক্টরি (অত: পর অনেক সিস্টেমের মধ্যে মাত্র তিনটি ডিরেক্টরি আছে ভাগে ভাগ করা হয় $PATH
: /usr/local/bin
, /usr/bin
এবং /bin
)। ডিরেক্টরিতে এক্সিকিউটেবল ফাইল এবং সাব-ডাইরেক্টরি উভয়ই পাওয়া বিরল, সুতরাং ডিরেক্টরিতে ডিরেক্টরিটির সাব-ডাইরেক্টরি অন্তর্ভুক্ত করার কোনও দাবি নেই $PATH
।
কোন কোন সময়ে দরকারী হতে পারে তা হল bin
একটি প্রদত্ত ডিরেক্টরিটির উপ-ডিরেক্টরিগুলির সমস্ত উপ-ডিরেক্টরিগুলি এতে অন্তর্ভুক্ত করা $PATH
:
for d in /opt/*/bin; do PATH="$PATH:$d"; done
তবে এটি খুব কমই করা হয়। সাধারণ পদ্ধতি যখন অ-মানক ডিরেক্টরিতে এক্সিকিউটেবলগুলি থাকে $PATH
সেই পথে কোনও ডিরেক্টরিতে প্রতীকী লিঙ্ক তৈরি করা হয় /usr/local/bin
। stow
উপযোগ (অথবা xstow
) যে বিষয়ে উপযোগী হতে পারে।
এটি সমর্থিত না হওয়ার একটি কারণ হ'ল বিন / (এবং অনুরূপ) ডিরেক্টরিগুলি নির্দিষ্ট ডিরেক্টরিগুলিতে নির্দেশ করার জন্য প্রতীকী লিঙ্কগুলি ব্যবহার করে যেখানে প্রোগ্রামগুলির জন্য প্রকৃত এক্সিকিউটেবলগুলি ইনস্টল থাকে।
সুতরাং, যদি আপনার $PATH
অন্তর্ভুক্ত থাকে /usr/local/bin
(যা সম্ভবত এটি করে) সেই ফোল্ডারটি প্রতীকী লিঙ্কগুলিতে পূর্ণ (যেমন ruby
) কোন নির্দিষ্ট ডিরেক্টরিতে নির্দেশ করে যেখানে রুবি চালানোর কোডটি পাওয়া যায় (যেমন ../Cellar/ruby/2.1.3/bin/ruby
)।
এজন্য আপনাকে নিজের প্রতিটি এক্সিকিউটেবলের ফোল্ডার নির্দিষ্ট করতে হবে না $PATH
; প্রতীকী লিঙ্কগুলি প্রথাগতভাবে বিন / টাইপ ডিরেক্টরিতে পাওয়া যায় এটি আপনার জন্য পরিচালনা করে।
ইন zsh , $ পাথ একটি অ্যারে হিসাবে যোগ করা যেতে পারে। আপনি AT PATH অ্যারে একাধিক সাব-ডিরেক্টরিকে যুক্ত করতে শেল গ্লোববিং ব্যবহার করতে পারেন।
উদাহরণ:
ইন .zshrc
:
typeset -U PATH path
BINPATH="$HOME/bin"
path+=("$BINPATH" ${BINPATH}/*/)
export PATH
এটি $ BINPATH এর সমস্ত উপ-ডিরেক্টরিকে $ PATH অ্যারে সংযুক্ত করবে।