আমার বাশ স্ক্রিপ্টগুলি কোথায় রাখা উচিত


15

আমার নিয়মিত যে কাজগুলি হয় সেগুলির জন্য আমি কয়েকটি খুব সাধারণ বাশ স্ক্রিপ্ট পেয়েছি c এর মধ্যে একটি হ'ল আমার ব্যাকআপের কাজগুলি করার জন্য সদৃশ চালানো। কিছুই চালাক কিছু না যদি কেবল .. একটি বিবরণ সত্যিই তারপর। এটি যেমন sudo হিসাবে চালানো দরকার তবে আমার স্ক্রিপ্টটি / usr / bin (বা PATH- র অন্য কোনও স্থান), root.root তে chown এবং chmod এ 700 করে রাখা ভাল অনুশীলন হবে?


আমি বলতে পারি gitআপনার স্ক্রিপ্টগুলি সংস্করণ-নিয়ন্ত্রণ করতে ব্যবহার করুন , গিট রেপোর স্থানীয় কপি আপনার পছন্দ মতো কোথাও রেখে দিন ~এবং তারপরে স্ক্রিপ্টগুলিকে সিমিলিং করুন ~/bin
এডউইনকস্ল

আপনি বলতে চাচ্ছেন gitহিসেবে githubমেঘের মধ্যে?
WinEunuuchs2Unix

2
@ WinEunuuchs2Unix আপনি যদি চান যে আপনার স্ক্রিপ্টগুলি অন্য ব্যবহারকারীর জন্য উপলভ্য হয়, আপনার সেগুলি এতে রাখা উচিত /usr/local/bin। অন্যথায়, আমি কেবল তাদের ভিতরে sayুকিয়ে বলব ~/bin। আপনি আপগ্রেড করার সময় উভয় ডিরেক্টরিতে আপনার নিজস্ব স্ক্রিপ্টগুলি নিরাপদ থাকা উচিত।
এডউইনকস্ল

2
উপরে হিসাবে, এগুলি / usr / স্থানীয় / বিনে রাখুন। আপনার স্ক্রিপ্টের নামগুলি অনন্য এবং বিদ্যমান লিনাক্স কমান্ড / বাইনারি নাম নয় তা নিশ্চিত করুন। আমি নিজে তৈরি হওয়া যে কোনও স্ক্রিপ্টের শেষের জন্য কেবল একটি সংখ্যা যুক্ত করব কারণ আমি কোনও সংখ্যায় প্রাক-বিদ্যমান লিনাক্সের নামটি দেখিনি। (কিছু সত্যিই অস্পষ্ট বেশী পারে ... বলতে না
ডগ

1
@ এডউইনকস্ল প্রায় এক বছর পরে আমাকে বলতে ~/binহবে বেশিরভাগ স্ক্রিপ্টগুলির জন্য সেরা জায়গা কারণ সেগুলিতে sudoসঞ্চিত থাকাকালীন আপনাকে সম্পাদনার জন্য আপনাকে ব্যবহার করতে হবে না /usr/local/bin
WinEunuuchs2Unix

উত্তর:


3

আমি আমার নিজস্ব স্ক্রিপ্টগুলিতে সংরক্ষণ করি /opt/scripts

আপনার স্ক্রিপ্ট যদি প্রতিটি সিস্টেম ব্যবহারকারীর দ্বারা কার্যকর করা যায় তবে আপনি এর সাথে একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন /usr/bin

যদি কেবলমাত্র রুটের স্ক্রিপ্টটি কার্যকর করা হয় তবে আপনি এর সাথে একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন /usr/sbin

এতে একটি প্রতীকী লিঙ্ক যুক্ত করার আদেশ /usr/bin/:

ln -s /opt/scripts/<script> /usr/bin/

আপনি স্ক্রিপ্টটি কার্যকর করতে পারেন, কারণ ডিফল্টরূপে /usr/bin/আপনার PATH এ রয়েছে


1
আমি প্রস্তাব দিচ্ছি যে /usr/binব্যবহারকারী / স্থানীয় শেল স্ক্রিপ্টের লক্ষ্য হিসাবে ব্যবহার করার পরিবর্তে - এটি ফাইল/usr/local/bin (বা /opt/bin) ফাইল সিস্টেম হায়ারার্কি স্ট্যান্ডার্ড অনুযায়ী - দেবেনিয়ান উইকি দ্বন্দ্ব এড়ানোর জন্য (বেশিরভাগ সময় আপনি উবুন্টুর সরবরাহিত স্ক্রিপ্টগুলি অগ্রাধিকার নিতে চান)।
শালম্ব

বেশিরভাগ সিস্টেমে /usr/local/binওভাররাইড হয় /usr/binযেমন এটি পরে আসে। এটি উদ্দেশ্য হিসাবে রয়েছে, যেহেতু সিস্টেম ফাইলগুলিকে সেখানে রাখে না, সুতরাং আপনি সেখানে ফাইল রাখতে পারেন যা সিস্টেম প্রদত্ত ফাইলগুলিকে ওভাররাইড করে।
22:38

উভয় উত্তর সূক্ষ্ম মনে হলেও আমি এটিকে সঠিক উত্তর হিসাবে চিহ্নিত করেছি। কারণটি হ'ল, আমি এফএইচএস ডক্সটি একবারে দেখেছি এবং বুঝতে পেরেছি / ঠিক এই উদ্দেশ্যটির জন্য অপ্ট রয়েছে। আমি তাদের ধারণাটি কেবল আমার স্ক্রিপ্টগুলিতে / usr / স্থানীয় / বিনের সাথে লিঙ্ক করে সিম পছন্দ করি। সমস্ত পয়েন্টার জন্য ধন্যবাদ।
হ্যাটারম্যান

17

আপনি ছাড়া অন্য কোনও ব্যবহারকারী যদি এই স্ক্রিপ্টগুলি ব্যবহার না করেন:

তারপরে আপনি এগুলিকে রাখতে পারেন /home/$USER/binbinফোল্ডারটি সেখানে না থাকলে তৈরি করুন এবং ফাইলগুলি সেখানে সরিয়ে নিন। আপনার বাড়ির বিন ফোল্ডারটি PATH এনভায়রনমেন্ট ভেরিয়েবলটিতে স্বয়ংক্রিয়ভাবে যুক্ত হবে। কোডটি এতে রয়েছে .profile:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

দেখুন $ পথে / হোম / ব্যবহারকারীর নাম / বিন যোগ করার জন্য কিভাবে?

বা কিছু সিস্টেমে এটি হতে পারে .bashrc:

export PATH=${HOME}/bin/:${HOME}/.local/bin:${PATH}

ধন্যবাদ এল্ডার গীক

এই স্ক্রিপ্টটি যদি অন্য ব্যবহারকারীদের দ্বারা ব্যবহার করতে হয়:

তাহলে হয় হয় /usr/local/binবা /opt/binভাল বিকল্প হয়। দেখুন কাস্টম লিনাক্স স্ক্রিপ্ট স্থাপনের জন্য কি কোনও আদর্শ জায়গা আছে?

আশাকরি এটা সাহায্য করবে


3

আমার একটি ডিরেক্টরি আছে যা আমি আমার স্থানীয় সরঞ্জামগুলি বা আমি বিভিন্ন কম্পিউটারে স্থাপন করি এমন জিনিসগুলির দ্রুত সংগ্রহের জন্য ব্যবহার করি /usr/local/apollo। জন্য এই ডিরেক্টরি বন্ধ শাখা আছে flags, binএবং logs

ডিফল্ট apt-getসংগ্রহস্থলের বাইরে যে অ্যাপ্লিকেশনগুলি আমি ডাউনলোড এবং ইনস্টল করি তাদের জন্য অ্যাপ্লিকেশনটির /opt/নির্দিষ্ট সংস্করণে আরও একটি সাব-ডিরেক্টরি সহ অ্যাপ্লিকেশনটির নামে একটি ডিরেক্টরি স্থাপন করা হয় । এইভাবে আমার কোনও অ্যাপ্লিকেশনটির সংকলিত সংস্করণ বিতরণকৃত সংস্করণটির মতো vlcবা eclipseবিরোধ করবে না।

আমার ব্যবহারটি /optমূলত এটি সরকারীভাবে ডিজাইন করা।

ডিরেক্টরিগুলি /usr/local/bin, /usr/local/apolloএবং /optএকটি নতুন ওএস সংস্করণ ইনস্টলেশন ওভাররাইট থেকে রক্ষা পেতে পারে।


1
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binআমার মনে হচ্ছে সত্যটি /usr/local/binইতিমধ্যে একটি কম জিনিস মনে রাখার পথে রয়েছে। আমি আপনার পদ্ধতিটি পছন্দ করি তা আমি /opt/program/versionপেয়েছি কার্নেল স্টাফের জন্য এবং বর্ধিত EnhanceIO এর মতো সংকলন করতে যেখানে তারা কার্নেলের সংস্করণগুলির মধ্যে জিনিস পরিবর্তন করে। কি /apolloএকটি চাঁদ অবতরণ প্রিয় ব্যক্তিগত বা এটা উবুন্টু অর্থ আছে?
WinEunuuchs2Unix

এর মধ্যে /usr/local/binএবং এর মধ্যে পার্থক্য কী usr/local/sbinযে আধুনিকীকরণগুলি আপগ্রেডের সময় স্তম্ভিত হয়?
WinEunuuchs2Unix

ইনস্টলারটি এটি যে ডিরেক্টরিগুলি ব্যবহার করে সেগুলি নিউকস করে। এটি সুবিধামত /usr/localডিরেক্টরি তৈরি করে , তবে এটিগুলির কোনওটিতেই এটি রাখে না। এই ডিরেক্টরিগুলি ব্যবহারকারী দ্বারা পপুলেটেড। সংগ্রহস্থলের বাইরের অনেক উত্স প্রোগ্রাম ব্যবহারকারীকে তারা কোথায় ইনস্টল করতে চান তা নির্বাচনের বিকল্প দেয় give কনফিগারেশন ফাইলের মধ্যে ডিফল্ট হয় /usr/local/bin। সুতরাং এই ডিরেক্টরিগুলি ব্যবহার করা কতটা সাধারণ কারণ, সেগুলি ডিফল্টরূপে ব্যবহারকারীর পথে অন্তর্ভুক্ত করা হয়। ডিফল্টরূপে সিস্টেমটি পরীক্ষা করে ~/bin এবং যদি এটি বিদ্যমান থাকে তবে এটিকে পথে যুক্ত করে।
এলডি জেমস

আপনি বলতে চাইছেন ~/binইনস্টল করার সময় সিস্টেমটি পরীক্ষা করা হয় বা প্রতিটি বুট? মধ্যে পার্থক্য কি sbinএবং bin? তারা মনে করতে পারে যে এখানে কোয়াস্ট-বিধি থাকতে হবে যার ভিত্তিতে আপনি প্রোগ্রামের ধরণের উপর ভিত্তি করে বাছাই করেছেন?
WinEunuuchs2Unix

1
@ WinEunuuchs2 ইউনিক্স ~/binপথে ... এটি ইনস্টলেশনের সময় যুক্ত করা হয়নি। সিস্টেমটি প্রতিটি লগইনে এটি পরীক্ষা করে এবং লগইন চলাকালীন এটি উপস্থিত থাকলে $ PATH এ যুক্ত করে। আপনার ~/.profileসেটিংসের শেষ দুটি লাইনটি দেখুন ।
এলডি জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.