আমার পথে একটি বাইনারি যুক্ত করুন


15

আমার এক্সিকিউটেবল আছে আমি টার্মিনালে এক্সিকিউটেবলকে অন্যান্য কমান্ডের মতোই এক্সিকিউটেবল এক্সিকিউট করতে চাই।

আমি আমার এক্সিকিউটেবল মধ্যে লাগাতে পারেন /usr/local/binঅথবা আমি তার যোগ করতে পারিনি PATHকরতে ~/.bashrc। দুজনেই কাজ করবে।

এর চেয়ে ভাল কি? কোন পার্থক্য আছে?

উত্তর:


12

উদাহরণস্বরূপ আমাকে ধরে নেওয়া যাক, আপনার এক্সিকিউটেবল আছে myscript। আপনাকে এটিকে টার্মিনাল থেকে চালানো দরকার যেমন,

/path/to/myscript

ব্যবহারকারী স্তর পরিবর্তন

আপনি যোগ তাহলে PATHযে এক্সিকিউটেবল এর ~/.bashrc, আপনি শুধুমাত্র যে কোনো জায়গা থেকে নাম দিয়ে এক্সিকিউটেবল চালাতে পারেন ( অবিনাশ রাজ যেমন ইতিমধ্যে উল্লিখিত),

myscript

তবে পরিবর্তনটি ব্যবহারকারী স্তরে প্রভাবিত হবে । এর অর্থ আপনার যদি অন্য কোনও ব্যবহারকারী (গুলি) থাকে তবে তারা কেবল নামের সাথে এক্সিকিউটেবল অ্যাক্সেস করতে পারবেন না। যদি তাদের যথাযথ অনুমতি থাকে তবে তাদেরকে নির্বাহী হিসাবে চালানো দরকার,

/path/to/myscript

এছাড়াও, আপনি স্কোডটি sudo হিসাবে চালাতে সক্ষম হবেন না মতো কারণ এটি PATHমূলের মধ্যে নেই, আপনার sudoব্যবহারের প্রয়োজন হিসাবে চালাতে ,

sudo /path/to/myscript

সিস্টেম স্তর পরিবর্তন

আপনি যদি আপনার স্ক্রিপ্টটি ভিতরে রাখেন /usr/local/bin এটিতে এটির জন্য সিস্টেম ব্যাপী এবং সমস্ত ব্যবহারকারীর জন্য অ্যাক্সেস করা যায়। সেক্ষেত্রে যে কোনও ব্যবহারকারী আপনার নির্বাহযোগ্য হিসাবে চালাতে পারবেন (যথাযথ অনুমতি প্রাপ্তির সাপেক্ষে)

myscript

সেক্ষেত্রে আপনি এক্সিকিউটেবল হিসাবে চালাতে পারেন sudo ,

sudo myscript

এখন আপনার প্রয়োজনের উপর নির্ভর করে একটি উপায় বেছে নিন।


2

আপনার $PATHভেরিয়েবলটিতে ফাইলের অবস্থান যুক্ত করা~/.bashrc ফাইলটিতে কেবল আপনাকে যে কোনও অবস্থান থেকে কার্যকর করতে অনুমতি দেবে, অন্যদিকে এটি স্থাপন করলে /usr/bin/আপনার সিস্টেমের সমস্ত ব্যবহারকারীরা যে কোনও অবস্থান থেকে সেই ফাইলটি সম্পাদন করতে পারবেন।

তা কেন? কারণ, আপনার ~/.bashrcফাইলটি কেবল একজন ব্যবহারকারী হিসাবে আপনার কাছে দৃশ্যমান। সুতরাং সম্পন্ন সমস্ত পরিবর্তনীয় পরিবর্তন আপনার মধ্যে সীমাবদ্ধ। অন্যদিকে, ফাইলটি যুক্ত /usr/binকরার ফলে ফাইলটি সমস্ত ব্যবহারকারীর জন্য থাকতে পারে এবং যেহেতু কেউ এটি অপসারণ না /usr/binকরে ততক্ষণ $PATHচলকটিতে উপস্থিত থাকে, সমস্ত ব্যবহারকারীকে যে কোনও অবস্থান থেকে এটি সম্পাদন করার অনুমতি দেবে।


1

আপনি যদি এক্সিকিউটেবল ফাইলকে /usr/binবা এগুলি স্থাপন করেন /usr/local/binতবে আপনি কেবলমাত্র নামটি নির্দিষ্ট করে (সেই your-programপরিবর্তে) প্রোগ্রামটি চালাতে সক্ষম হবেন/usr/local/bin/your-program ) ।

আপনি যদি পরিবর্তে প্রোগ্রামটিতে থাকা ডিরেক্টরিটি ~/.bashrcফাইলটিতে যুক্ত করেন তবে সেই ডিরেক্টরিতে PATHউপস্থিত যে কোনও এক্সিকিউটেবল ফাইল কেবল তার নাম টাইপ করে চালু করা যেতে পারে।


1
এই তথ্যটি মিথ্যা, আপনি "সেই ডিরেক্টরিতে" না থাকলেও আপনি এক্সিকিউটেবলটি চালু করতে পারেন।
লেকেনস্টেইন

এটি কীভাবে মিথ্যা ?, দয়া করে আরও কিছু ব্যাখ্যা করুন।
অবিনাশ রাজ

1
ঠিক আছে, আপনার উত্তরটি পড়তে আমার খুব কষ্ট হয়েছিল (এবং এর মাধ্যমে ত্রুটি হয়েছিল) তাই আমি বিভ্রান্তি দূর করতে এটি সম্পাদনা করেছি এবং ডাউনটোটটি সরিয়েছি। আশা করি এটি সাহায্য করবে।
লেকেনস্টেইন

সুতরাং, প্রশ্ন: আরও ভাল কি? কোন পার্থক্য আছে? আপনি কার্যত ওপি ছাড়া আর কিছু বলেননি।
রাদু রেডানু

আমি ওএসের প্রশ্নের উত্তর দিয়েছি তবে সংক্ষিপ্ত ফর্ম্যাটে নয়।
অবিনাশ রাজ

0

@ সৌরভ উত্তরের পরিপূরক হিসাবে ...

"ব্যবহারকারীর স্তর পরিবর্তন" এর জন্য ~/.bashrcফাইল সম্পাদনা করার পরিবর্তে আপনি কেবল ডিরেক্টরি তৈরি করতে পারেন$HOME/bin/ এবং সেখানে আপনার স্ক্রিপ্টগুলি রাখতে পারেন।

ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে যুক্ত হয়ে যাবে PATH(কমপক্ষে উবুন্টু 12.04 সাল থেকে) এর অর্থ আপনি সেই ডিরেক্টরীটির ভিতরে সমস্ত স্ক্রিপ্ট / এক্সিকিউটেবলকে একটি সাধারণ দিয়ে চালাতে সক্ষম হবেন:

myscript

শুধু আমার 2 সেন্ট। :)

পিএস- আমি @ সৌরভ উত্তর সম্পর্কে মন্তব্য হিসাবে এটি পোস্ট করার চেষ্টা করেছি, তবে আমার যথেষ্ট খ্যাতি ছিল না। :-(

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