আমি কীভাবে ডিরেক্টরিতে সমস্ত ডিরেক্টরিকে $ PATH এ সেট করতে পারি?


38

Looks PATH- তে ডিরেক্টরি যুক্ত করার পরে দেখে মনে হচ্ছে, এর উপ-ডিরেক্টরিগুলি পুনরাবৃত্তভাবে যুক্ত হয় না। তাহলে আমি কি এটা করতে পারি? বা এটি সমর্থিত না হওয়ার কোনও কারণ আছে?


5
কেন পৃথিবীতে আপনার এটি দরকার?
অ্যালেক্স

10
@ অ্যালেক্স: আপনার কী দরকার নেই বলে মনে করেন?
টিম

4
@ এটি "সাধারণত" সমর্থিত না হওয়ার কারণ এটি একটি সুরক্ষা ঝুঁকি এবং সাধারণত প্রয়োজন হয় না। আপনি যদি পুনরাবৃত্তভাবে আপনার পথে ডিরেক্টরি যুক্ত করেন তবে কে কী কী আটকে থাকতে পারে তা জানে ... নিরীক্ষণ করা এটি আরও শক্ত করে তোলে।
xenoterracide

4
@ টিম: এটি চাওয়া সত্যিই অবাক করা এবং অস্বাভাবিক জিনিস, এজন্যই।
এলেক্স

8
@alex বিন ডিরেক্টরিতে সাব-ডিরেক্টরি সম্পর্কে কী? আমি বিন ফোল্ডারে ডিরেক্টরিতে স্ক্রিপ্টগুলি সংগঠিত করতে চাই।
অ্যান্ডি

উত্তর:


19

এগুলির মতো সন্ধান করে পুনরাবৃত্তভাবে তাদের যুক্ত করুন:

PATH=$PATH$( find $HOME/scripts/ -type d -printf ":%p" )

সতর্কতা: প্রশ্নের মন্তব্যে উল্লিখিত হিসাবে এটি উত্সাহিত করা হয়নি কারণ এটি একটি সুরক্ষা ঝুঁকি তৈরি করে কারণ যুক্ত ডিরেক্টরিগুলির মধ্যে কার্যকরযোগ্য ফাইলগুলি দূষিত নয় এমন কোনও গ্যারান্টি নেই।

গিলসের উত্তর অনুসরণ এবং স্টো ব্যবহার করা সম্ভবত এটির থেকে ভাল সমাধান


6
সতর্কতা: এই উত্তরটি প্রযুক্তিগতভাবে সঠিক তবে অ্যালেক্স এবং জেনোটেরাকাসাইড নোট হিসাবে এটি করা একটি পাগল-নিরাপত্তাহীন জিনিস এবং আসলে এটি ব্যবহার করার আগে আপনার অবশ্যই দুটিবার চিন্তা করা উচিত।
কালেব

2
অনুশীলনে এটি কেন ভাল, নিরাপদ জিনিস নয় তা সম্পর্কে আপনার উত্তরে একটি সতর্কতা যুক্ত করুন।
কালেব

3
আমি এটিকে বিশেষ বিপজ্জনক বলে বিবেচনা করব না ; এলোমেলো ডিরেক্টরি যুক্ত $PATHকরা বিপজ্জনক, তবে উপ-ডিরেক্টরিগুলি যুক্ত করা খুব খারাপ নয়। তবে এটি সাধারণত অকেজো এবং সম্ভবত অদক্ষ (এবং এমনকি আপনাকে কখনও কখনও পরিবেশের আকারের সীমাতে ফেলে দেয়)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

3
@ কালেব: পাগল সম্ভবত, তবে অনিরাপদ কেন? যদি কারও কাছে সাবডিয়ারগুলিতে দূষিত এক্সিকিউটেবল ফাইল যুক্ত করার অ্যাক্সেস থাকে তবে তিনি সেগুলি প্যারেন্ট ডিয়ারে (অর্থাৎ, ~/binবা ~/scripts) যোগ করতে পারেন , তাই তাদের সুরক্ষা একই is
MestreLion

2
সুরক্ষা ঝুঁকি যদি আপনি এমন পরিবেশে কাজ করেন যেখানে এলোমেলো লোকেরা আপনারতে দূষিত ফাইলগুলি যুক্ত করতে পারে ~/scripts। আমি এবং অন্য
কারওও

21

সাধারণ ইউনিক্স ডিরেক্টরি কাঠামোটিতে অ্যাপ্লিকেশন ফাইলগুলি ডিরেক্টরি অনুসারে বাছাই করা থাকে: 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/binstowউপযোগ (অথবা xstow) যে বিষয়ে উপযোগী হতে পারে।


4

এটি সমর্থিত না হওয়ার একটি কারণ হ'ল বিন / (এবং অনুরূপ) ডিরেক্টরিগুলি নির্দিষ্ট ডিরেক্টরিগুলিতে নির্দেশ করার জন্য প্রতীকী লিঙ্কগুলি ব্যবহার করে যেখানে প্রোগ্রামগুলির জন্য প্রকৃত এক্সিকিউটেবলগুলি ইনস্টল থাকে।

সুতরাং, যদি আপনার $PATHঅন্তর্ভুক্ত থাকে /usr/local/bin(যা সম্ভবত এটি করে) সেই ফোল্ডারটি প্রতীকী লিঙ্কগুলিতে পূর্ণ (যেমন ruby) কোন নির্দিষ্ট ডিরেক্টরিতে নির্দেশ করে যেখানে রুবি চালানোর কোডটি পাওয়া যায় (যেমন ../Cellar/ruby/2.1.3/bin/ruby)।

এজন্য আপনাকে নিজের প্রতিটি এক্সিকিউটেবলের ফোল্ডার নির্দিষ্ট করতে হবে না $PATH; প্রতীকী লিঙ্কগুলি প্রথাগতভাবে বিন / টাইপ ডিরেক্টরিতে পাওয়া যায় এটি আপনার জন্য পরিচালনা করে।


1

ইন zsh , $ পাথ একটি অ্যারে হিসাবে যোগ করা যেতে পারে। আপনি AT PATH অ্যারে একাধিক সাব-ডিরেক্টরিকে যুক্ত করতে শেল গ্লোববিং ব্যবহার করতে পারেন।

উদাহরণ:

ইন .zshrc:

typeset -U PATH path
BINPATH="$HOME/bin"
path+=("$BINPATH" ${BINPATH}/*/)
export PATH

এটি $ BINPATH এর সমস্ত উপ-ডিরেক্টরিকে $ PATH অ্যারে সংযুক্ত করবে।

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