সবার জন্য বৈশ্বিক পরিবেশ পরিবর্তনশীল সেট করা ting


17

যদি আমি কোনও ভেরিয়েবল সেট করে রাখি তবে /etc/environmentএটি কেবলমাত্র প্রশাসকগণের সাথেই থাকাকালীন প্রয়োগ হয় sudo su

আমি কীভাবে প্রত্যেককে প্রয়োগ করার জন্য ভেরিয়েবলগুলি পেতে পারি? বিশেষত যখন তারা টার্মিনালে থাকে? সেটিংস /etc/enviromentকি ব্যাশের জন্য প্রযোজ্য নয়?

উত্তর:


13

/etc/environmentআপডেটটি কেবল পরবর্তী সেশনে কাজ করবে, এটি স্বয়ংক্রিয়ভাবে পুনরায় লোড হয়নি।

যার অর্থ আপনি ইতিমধ্যে অন্যান্য ব্যবহারকারীর জন্য শুরু হওয়া সেশনের জন্য এটিকে পরিবর্তন করতে পারবেন না।

আপনি যদি যা চান তার মধ্যে "পুনরায় লোড" করতে চান /etc/environmentতবে নিম্নলিখিত কমান্ডটি আপনার প্রয়োজন:

source /etc/environment

তবে আবার এটি কেবল আপনার নিজের বর্তমান অধিবেশনটির জন্যই কাজ করবে, অন্য ব্যবহারকারীরা নতুন অধিবেশন শুরু না করা বা তাদের নিজস্ব সেশনে উপরের কমান্ডটি চালা না করা পর্যন্ত প্রভাবিত হবে না।


4

টি এল; ডিআর

এই কনফিগারেশন ফাইলগুলি বৈশ্বিক ( /etc/environment, /etc/profile) বা ব্যবহারকারী-নির্দিষ্ট ( ~/.profile, ~/.bashrc) কেবলমাত্র পরবর্তী লগইন / সেশনে প্রক্রিয়াভুক্ত হবে।

বিশ্বব্যাপী ফাইল সমস্ত ব্যবহারকারী (শুধুমাত্র রুট) ক্ষেত্রে প্রযোজ্য ... কিন্তু আপনি কি পরিবর্তনগুলি পরিবেশে প্রতিফলিত দেখতে আপনার লগইন অধিবেশন পুনরায় শুরু করতে হবে। suআপনি যেমন পর্যবেক্ষণ করেছেন ... কল করে বা লগ আউট / ইন বা রিবুট করার মাধ্যমে এটি ঘটতে পারে । আপনি suকোনও অ-রুট ব্যবহারকারীকে করতে পারেন এবং আপনি দেখতে পাবেন যে তাদের পরিবেশের পরিবর্তনও রয়েছে।

বৈশ্বিক পরিবেশ বাছতে আপনাকে পুনরায় বুট করার বা পুনরায় লগইন করার কারণ হ'ল পরিবেশটি প্যারেন্ট প্রক্রিয়া থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং আপনি যে সমস্ত কিছু চালাচ্ছেন তার মূল প্রক্রিয়া হ'ল আপনার লগইন শেল ... সুতরাং যদি আপনার লগইন শেলটি না থাকে পরিবেশ ... তারপর লগইন শেল মধ্যে প্রক্রিয়া শুরু হয় না। আপনি পৃথক প্রক্রিয়াগুলি শুরু করার সাথে সাথে অবশ্যই পরিবেশ সেট / আপডেট করতে পারেন তবে আপনাকে লগইন শেলটির জন্য পরিবেশ নির্ধারণ করতে হবে এবং পরিবর্তনটি দেখার জন্য সমস্ত উপ-প্রক্রিয়া পুনরায় চালু করতে হবে।

বৈশ্বিক পরিবেশ

অন্য কেউ উল্লিখিত হিসাবে, আপনি পরিবর্তনের জন্য জন্য পুনরায় চালু করা বা লগ-আউট / লগইন প্রয়োজন /etc/profile, /etc/profile.d/*.shএবং /etc/environmentকুড়ান হবে।

কারণ এই ফাইলগুলি বৈশ্বিক পরিবেশ নির্দিষ্ট করার সময় ... এগুলি কেবল একবার লগইনে চালিত হয় এবং সুতরাং বিদ্যমান লগইন / সেশনগুলি এই ফাইলগুলিতে পরিবর্তনগুলি প্রতিফলিত করে না। একটি রিবুট প্রত্যেকের লগইনকে তাদের নতুন পরিবেশ বাছতে বাধ্য করে "পুনরায় সেট করে"।

আপনার নিজস্ব লগইন সেশনে আপনি source /etc/profileএকটি রিবুট বা লগআউট / লগইন ছাড়াই পরিবর্তনগুলি তুলতে পারবেন ... তবে এটি কেবল আপনার নিজের সেশন এবং আপনার সেশনের মধ্যে থাকা নতুন প্রক্রিয়াগুলিকে প্রভাবিত করবে।

এটিও নোট করুন যে কোনও ভেরিয়েবল ইন্টারপোলেশন নেই /etc/environment(এটি কোনও স্ক্রিপ্ট নয়) সুতরাং আপনি PATH="$PATH:/my/custom/path"সেখানে স্টাফ করতে পারবেন না ।

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

নোট যে bashrcসমগ্র লগ-ইন শেল কিন্তু ব্যাশ শেল ও উপ প্রসেসের জন্য পরিবেশ সেট করার জন্য দরকারী না ... তাই সত্য "বিশ্বব্যাপী" বা "ব্যবহারকারী বিশ্বব্যাপী" আপনি সম্ভবত আপনার পরিবেশ কনফিগ লাগাতে চান /etc/profileবা /etc/profile.d/my-custom-env.shবা ~/.profile। অন্যান্য শেলগুলির (যেমন: zsh) নিজস্ব কনফিগারেশন ফাইল রয়েছে তাই বাশার্কে নন-ব্যাশ-নির্দিষ্ট পরিবেশের কনফিগারেশনটি যখন / আপনি শেলগুলি স্যুইচ করেন (বা সিস্টেমে অন্য শেল ব্যবহার করে অন্যান্য ব্যবহারকারী থাকতে পারে) সমস্যা বা বিভ্রান্তি সৃষ্টি করতে পারে।

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

নির্দিষ্ট ব্যবহারকারীর জন্য

ব্যবহারকারীর হোম ডিরেক্টরিতে (যেমন ~/.profile ~/.bashrc) ইন্টারেক্টিভ, লগইন শেলস, কেবলমাত্র ব্যাশ-ইত্যাদির জন্য আপনি এটি চান কিনা তার উপর নির্ভর করে প্রোফাইল বা বাশার্কে পরিবেশ অন্তর্ভুক্ত করুন look

মনে রাখবেন যে ব্যবহারকারীর লগইন সেশনের মধ্যে সমস্ত প্রক্রিয়ার জন্য পরিবেশগত পরিবর্তনের জন্য এটি পুনরায় চালু বা লগআউট / লগইন প্রয়োজন। ব্যবহারকারীর source ~/.profile... তবে এটি একটি টার্মিনালের মধ্যে সম্পন্ন হয় এবং কেবলমাত্র সেই টার্মিনাল সেশন এবং শিশু প্রক্রিয়াগুলির মধ্যেই পরিবেশ আপডেট করে ... ব্যবহারকারীর পুরো লগইন পরিবেশের জন্য অগত্যা নয়।

একটি নির্দিষ্ট প্রোগ্রামের জন্য কয়েকটি বিকল্প রয়েছে।

একটি হ'ল কমান্ডটি চালানোর সময় পরিবেশ সরবরাহ করা:

VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE" /path/to/program --opt1 --op2

আপনি systemd হল ব্যবহার করে থাকেন এছাড়াও অধীনে ইউনিট / সেবা ফাইলের মধ্যে পরিবেশ নির্দিষ্ট করতে পারেন [Service]সঙ্গেEnvironment=VAR_NAME="VAR VALUE" VAR2_NAME="VAR2_VALUE

এই বিকল্পটি সম্ভবত বিশৃঙ্খলা বোধ করতে পারে কারণ আপনি যখন প্রতিটি প্রোগ্রাম চালাবেন তখন আপনাকে পরিবেশ নির্দিষ্ট করতে হবে, তবে যদি পরিবেশটি সত্যিই কেবল সেই প্রোগ্রামের দ্বারা প্রয়োজন হয় ... তবে এটি সত্যই সেরা উপায় এবং আপনার এটি ব্যবহার করা উচিত এবং সমস্ত কিছুই ডাম্প না করা উচিত বাশার্ক বা প্রোফাইল ফাইলে into

আপনি যদি পরিবেশ নির্ধারণ ও প্রোগ্রাম চালনার জন্য সিস্টেমেড বা ডিআইডি ব্যবহার না করে থাকেন ... তবে অবশ্যই আপনি কেবল ব্যাশ স্ক্রিপ্টের সাহায্যে প্রোগ্রামের প্রয়োগটি গুটিয়ে রাখতে পারেন যেখানে আপনি সুবিধার জন্য পরিবেশ সেটআপ সহ পুরো কমান্ডটি সংরক্ষণ করেন।

তথ্যসূত্র:

এখানে একটি খুব বিশদ উত্তর রয়েছে যা আমি আপনাকে পড়ার পরামর্শ দিই: /ubuntu//a/247769/824160


3

এর অধীনে একটি কাস্টম শেল স্ক্রিপ্ট তৈরি করুন

/etc/profile.d/

আপনার তৈরি স্ক্রিপ্টের অভ্যন্তরে আপনার বিশ্বব্যাপী পরিবেশের পরিবর্তনগুলি যুক্ত করুন, রিবুট মেশিন তারপরে এটি সবার জন্য উপলব্ধ থাকবে।


আমার বিশ্বাস, প্যাকেজ আপডেট হওয়ার সাথে সাথে ফাইলটি পরিবর্তিত হতে পারে / etc / এনভায়রনমেন্ট ফাইল সম্পাদনা করার চেয়ে এটি আরও নির্ভরযোগ্য পন্থা।
23: 20 তে মুক্তি দিয়েছে

2

/etc/environmentআমার জন্য কাজ করতে একটি পরিবর্তনশীল যুক্ত করা Add

তবে পরিবর্তনটি /etc/environmentকার্যকর হওয়ার জন্য আমাকে পুনরায় চালু করতে হবে। কেবল টার্মিনাল উইন্ডোটি বন্ধ এবং পুনরায় খোলার পক্ষে যথেষ্ট ছিল না।


3
আপনি source /etc/environmentএটি পুনরায় লোড করতে সর্বদা একটি করতে পারেন।
পান্থরো

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