কোনও প্যাকেজ পরিচালকের আপনার .bashrc ফাইলটি পরিবর্তন করা উচিত?


9

আমি এমন কোনও কিছুর জন্য একটি প্যাকেজ লিখছি যাতে সঠিকভাবে সম্পাদন করার জন্য পরিবেশের পরিবর্তনশীল সেট হওয়া দরকার। প্যাকেজ পরিচালকের ইনস্টল পদক্ষেপটি কি কোনও ব্যবহারকারীর পরিবেশ পরিবর্তন করতে পারে, বা কেবল ব্যবহারকারীকে নিজেরাই তা করতে অনুরোধ জানানো উচিত? আমার স্বজ্ঞাততাটি পরবর্তীটি হবে তবে আমি প্রাক্তনদের পক্ষে যুক্তি দেখতে পাচ্ছি।


7
পরিবেশের পরিবর্তনশীল (যেমন, পরিবর্তে একটি কনফিগার ফাইল ব্যবহার করা) এর উপর নির্ভরতা সরিয়ে আপনি কি কিছুকে আরও ভাল আচরণ করতে পারেন? প্যাকেজিং হ্যাক বা ম্যাকিংয়ের সাথে এটি পছন্দনীয় হবে .bashrc, আমার ধারণা

অবশ্যই, তবে এই প্রশ্নের প্রয়োজনে বলি যে অ্যাপ্লিকেশনটি সংশোধন করা কোনও বিকল্প নয়।
ডেভিড কাউডেন

1
যদি ব্যবহারকারী চলমান না থাকে bash? বিবিধ স্টার্টআপ ফাইল সহ অনেকগুলি বিকল্প শেল উপলব্ধ। আমি গুরুত্ব সহকারে এখানে কিছু বিকল্প সমাধান সন্ধান করার পরামর্শ দিচ্ছি।
জুলাই

10
সুতরাং এটির চারপাশে একটি মোড়ক লিখুন। উদাহরণস্বরূপ দেখুন, tomcatযা সঠিকভাবে কাজ করতে বেশ কয়েকটি পরিবেশের পরিবর্তনশীলগুলির প্রয়োজন; এগুলি সবই একটি স্টার্টআপ স্ক্রিপ্ট দ্বারা সেট করা থাকে যা সরাসরি এটির বাইনারি চালানোর পরিবর্তে চালিত হয়।
জুলাই

1
@ ভালিটি আমি জানি। জুলসের প্রস্তাব ইতিমধ্যে প্রস্তাবিত হয়েছে। আমি সুন্দরী হয়ে উঠছি - প্রথমে যুক্তিযুক্ত যে বৃত্তাকার যুক্তিটির সাথে মজা করা হচ্ছে যে আমার শেল অজ্ঞেয়িক সমাধান হওয়া উচিত তারপর সমাধান হিসাবে শেল স্ক্রিপ্টটি ব্যবহার করার পরামর্শ দেওয়ার জন্য এগিয়ে যান। এটি একটি রসিকতা (;
ডেভিড কাউডেন

উত্তর:


18

প্যাকেজ পরিচালকের ইনস্টল পদক্ষেপটি কি কোনও ব্যবহারকারীর পরিবেশ পরিবর্তন করতে পারে, বা কেবল ব্যবহারকারীকে নিজেরাই তা করতে অনুরোধ জানানো উচিত?

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

ইউনিক্স পরিবেশে কনফিগারেশন ফাইলগুলি রাখার একটি জায়গা রয়েছে যা যখনই কোনও ব্যবহারকারী লগইন শেল শুরু করে। বোর্ন এবং সি শেলগুলির জন্য, আপনি /etc/profileএবং /etc/csh.cshrcযথাক্রমে আপনার কনফিগারেশন সন্নিবেশ করতে পারেন । (আপনি আনইনস্টল করার সময় এটিকে সরাতে ভুলবেন না))

অনেকগুলি সিস্টেম পৃথক ফাইলগুলি ব্যবহার করে এটি সমর্থন করে, যা একটি ফাইলে কিছু স্বেচ্ছাসেবী পাঠ্য পাঠ না করে কনফিগারেশনের বিটগুলি যুক্ত এবং মুছে ফেলা সহজ করে। (এটি আপনাকে প্যাকেজ ম্যানেজারের কাছ থেকে প্রাপ্ত নিয়ন্ত্রণ এবং জবাবদিহিতার সমস্ত সুবিধা দেয়)) কিছু বিতরণ /etc/profileসমস্ত ফাইলের সাথে মিলে পঠন কনফিগার করবে /etc/profile.d/*.sh


1
Icallyতিহাসিকভাবে , rcএকটি স্ক্রিপ্টে নামটি সিটিএসএসruncom (রান কমান্ড) থেকে প্রাপ্ত , তবে এর পরে অন্য অর্থ অন্তর্ভুক্ত করার সুযোগটি আরও প্রশস্ত হয়েছে।
জেফ্রি হ্যান্টিন

1
@ জেফ্রেহ্যান্টিন: টাচ é সরানো হয়েছে।
blrfl

1
বাছাই রাখতে ঘৃণা, তবে profile.dব্যাশের মধ্যে তৈরি নয়, এটি সাধারণত একটি হুক (সাধারণত ডিস্ট্রোর গোড়ায়) সরবরাহ করা হয় /etc/profile। ;)
জেফরি হ্যান্টিন

1
@ জেফ্রেহ্যান্টিন: যথেষ্ট সত্য, যদিও আমার "ইউনিক্সি" শব্দটি ব্যবহার করার বিষয়ে কোনও সমালোচনা হবে না। :-)
blrfl

14

এটা কখনোই একটি ব্যবহারকারীর সংশোধন করার গ্রহণযোগ্য /homeযদি না যে পরিবর্তন সমগ্র বিন্দু প্যাকেজ ম্যানেজার থেকে কাঠামো।

এর প্রধান পন্থাগুলি হ'ল:

  • ব্যবহারকারীদের এটির কনফিগার করার জন্য তাদের জানান।
  • ডিফল্ট সরবরাহ করুন যাতে এটির প্রয়োজন হয় না
  • একটি প্রবর্তক স্ক্রিপ্ট প্যাকেজ করুন যা মানগুলি যথাযথভাবে সেট করে
  • (যদি ডিস্ট্রো এটি সমর্থন করে) ভিতরে পরিবেশ পরিবর্তনশীল রফতানি করে এমন একটি ফাইল ফেলে দিন /etc/profile.d। কিছু লিনাক্স সিস্টেমে, এই ডিরেক্টরিতে সমস্ত স্ক্রিপ্ট ডিফল্ট শেল সেটআপ দ্বারা উত্সাহিত হয়, তাই আপনি নিরাপদে সেখানে ভেরিয়েবল সেট করতে পারেন।

7

প্রশ্ন কোনও প্যাকেজ পরিচালকের ইনস্টল পদক্ষেপটি ব্যবহারকারীর পরিবেশ পরিবর্তন করতে হবে?

উত্তর নং এটি ব্যবহারকারীর ডেটা পরিবর্তন করতে খারাপ ধারণা this এক্ষেত্রে .bashrc ফাইল। প্যাকেজ ম্যানেজার দ্বারা ব্যবহারকারীর ডেটা পবিত্র হিসাবে বিবেচনা করা উচিত?

প্রশ্ন কোনও প্যাকেজ পরিচালকের ইনস্টল পদক্ষেপটি কি কেবল ব্যবহারকারীকে নিজেরাই তা করতে অনুরোধ করবে?

উত্তর এটি অনেক বেশি স্বচ্ছ সমাধান তবে এখনও আদর্শ নয়।

আমি মনে করি আপনার একটি র‌্যাপার শেল স্ক্রিপ্ট তৈরি করা উচিত যেখানে আপনি প্রয়োজনীয় পরিবেশের ভেরিয়েবলগুলি সেট করতে পারেন এবং সেগুলি তার পরে কার্যকর করা যায় run


আমি এই ধারণাটিও বিবেচনা করেছি। প্রকল্পটি তরুণ এবং এমন পর্যায়ে পৌঁছে যাবে যেখানে এটি প্রয়োজনীয় হওয়া উচিত নয়।
ডেভিড কাউডেন

@ GlenH7 আমি আমার প্রতিক্রিয়া আপডেট করেছি। আশা করি আপডেট হওয়া প্রতিক্রিয়াটি আপনি যে উত্তরটির সন্ধান করছেন তা আরও বেশি।
আর সাহু

@ গ্লেনএইচ 7: এই প্রশ্নটি মূলত একটি এক্সওয়াই সমস্যা: meta.stackexchange.com/questions/66377/ কি-is- the- xy-problem , যেখানে পরিবেশের ভেরিয়েবলগুলির প্রয়োজনীয়তা হ'ল আসল সমস্যাটি সমাধান করা।

তদুপরি, একটি মোড়ক স্ক্রিপ্ট তৈরি করার জন্য এই উত্তরের পরামর্শটি হ'ল একমাত্র উত্তর যা সমস্ত শেলের জন্য কাজ করবে।
হোয়াটসাইম

1
@ ম্যাট থমাসসন যে উপলব্ধি আমাকে প্রকৃতপক্ষে প্রশ্ন জিজ্ঞাসা করতে প্ররোচিত করেছিল (;
ডেভিড কাউডেন

5

আপনি গাছের জন্য বন মিস করছেন। স্পষ্টতই এটি ব্যবহারকারীর জন্য পরিবেশ পরিবর্তন সম্পাদন করা আরও সুবিধাজনক তবে এটি আরও ঝুঁকিপূর্ণ এবং কিছুটা আক্রমণাত্মক। ইনস্টলারটি তাদের পরিবর্তন করতে হবে কিনা তা জিজ্ঞাসা করে আপনার উভয় বিশ্বের সেরাতম সংমিশ্রণ করা উচিত .bashrc, এবং অন্যথায় তারা কীভাবে এগুলি নিজেই করা উচিত সে বিষয়ে নির্দেশনা প্রদান করা উচিত।


পরামর্শের জন্য ধন্যবাদ. আমি এর আগে কখনও সর্বজনীন প্যাকেজ লিখিনি এবং কেবল নিশ্চিত করতে চাই যে আমি কিছু নিষিদ্ধ করব না।
ডেভিড কাউডেন

আজ এইভাবে গুগল ক্লাউড এসডিকে হ্যান্ডল করে। আপনি আপনার স্টার্টআপ ফাইলগুলি পরিবর্তন করতে চান কিনা তা জিজ্ঞাসা করে।
jmq

1

আপনি ধরে নিচ্ছেন যে "ব্যবহারকারী" একবাক্য। এই সিস্টেমে আমার কয়েক হাজার ব্যবহারকারী থাকলে কী হবে?

আপনি ধরে নিচ্ছেন যে আপনি এমনকি ব্যবহারকারীর হোম ডিরেক্টরি খুঁজে পেতে পারেন। যদি ব্যবহারকারীদের যেমন এলডিএপি-র মাধ্যমে পরিচালিত হয় তবে আপনাকে সমস্ত বৈধ ব্যবহারকারীর তালিকা পেতেও অনুমতি দেওয়া হতে পারে না। হোম ডিরেক্টরিগুলি / বাড়িতে নাও থাকতে পারে; এগুলি গতিশীলভাবে নেটওয়ার্ক থেকে মাউন্ট করা যেতে পারে। ব্যবহারকারীর হোম ডিরেক্টরিটি এনক্রিপ্ট করা থাকতে পারে এবং লগ ইন না করা অবস্থায় কীটি অ্যাক্সেসযোগ্য।

প্রতিটি সম্ভাব্য পরিস্থিতিতে নির্ভরযোগ্যভাবে এটি করার কোনও উপায় নেই। লগ ইন বা শেল স্প্যান করার সাথে সাথে ব্যবহারকারীদের জন্য পরিবেশের ভেরিয়েবল সেট করার জন্য ডিস্ট্রোর মেকানিজমটি ব্যবহার করুন। যদি এটি কাজ না করে তবে একটি মোড়ক লিখুন। (মোড়কের করতে আরো একটি বাইনারি যদি প্রয়োজন হয় মন্তব্যে যুক্তি মোকাবেলার হতে)।


0

কোনও প্যাকেজে গ্লোবাল ভেরিয়েবল সেট করা যদি তা আপনার নিজের প্রকল্পের দ্বারা সংজ্ঞায়িত হয় তবে তা গ্রহণযোগ্য হবে (এবং এর অর্থ প্রকল্পের নামটি ভেরিয়েবলের নামের অংশ!)। তারপরেও আপনার ব্যবহারকারীর .bashrcফাইলটি স্পর্শ করা উচিত নয় - পরিবর্তে আপনার /etc/profile.d এ কোনও স্ক্রিপ্ট যুক্ত করা উচিত ।

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