.Bashrc এ পরিবেশের পরিবর্তনশীল সেট করার সর্বোত্তম উপায় কী?


উত্তর:


16

সর্বোত্তম পথ

export VAR=value

পার্থক্য

এরকম

VAR=value

শুধুমাত্র স্ক্রিপ্টের সময়কালের জন্য পরিবর্তনশীল সেট করে ( .bashrcএই ক্ষেত্রে)। স্ক্রিপ্টের চাইল্ড প্রসেসগুলি (যদি থাকে তবে) ভিএআর সংজ্ঞায়িত হবে না এবং একবার স্ক্রিপ্টটি প্রস্থান VARহয়ে গেলে ।

export VAR=value

VARশিশু প্রসেসগুলিতে পাস করা ভেরিয়েবলের তালিকায় স্পষ্টভাবে যুক্ত হয়। এটি চেষ্টা করতে চান? শেল খুলুন, করুন

PS1="foo > "
bash --norc

নতুন শেলটি ডিফল্ট প্রম্পট পায়। পরিবর্তে আপনি যেমন কিছু করতে

export PS1="foo > "
bash --norc

নতুন শেলটি আপনার সবেমাত্র সেট করা প্রম্পট পায়।

আপডেট: ইয়ার কেলিং নোটগুলি হিসাবে ভেরিয়েবলের নীচে নোটগুলি সেরে .bashrcথাকা শেলটিতে অবিরত থাকে .bashrc। সাধারণত যখনই শেলটি স্ক্রিপ্টের ( source scriptnameকমান্ডটি ব্যবহার করে ) স্ক্রিপ্টের জন্য নির্ধারিত ভেরিয়েবলগুলি শেলের জীবন ধরে থাকে।


1
"শুধুমাত্র স্ক্রিপ্টের সময়কালের জন্য পরিবর্তনশীল নির্ধারণ করে (এই ক্ষেত্রে .bashrc)" এটি মিথ্যা / বিভ্রান্তিকর। এইভাবে সেট করা চলকগুলি ইন্টারঅ্যাকটিভ শেলটিতে অবিচল থাকে যা .bashrc পড়ে।
ইয়ান কেলিং

PS1পরিবেশ পরিবর্তনশীল হিসাবে রফতানি করা একটি ভেরিয়েবলের একটি খারাপ উদাহরণ। এটি কেবল শিশু প্রক্রিয়াগুলির জন্য অর্থবহ যা শাঁস এবং এটি বিভিন্ন শেল (যেমন, ব্যাশ এবং ড্যাশ) দ্বারা আলাদাভাবে ব্যাখ্যা করা হয়। শ্রেষ্ঠ অনুশীলন কেবলমাত্র একটি নিয়মিত শেল পরিবর্তনশীল হিসাবে সেট হয় .bashrc। বিভিন্ন পরিবেশের উন্নত উদাহরণ হল HOME, PATH, EDITOR, ইত্যাদি
এন্থনি Geoghegan

10

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

আপনার .bashrc ফাইলে এই দুটি লাইন যুক্ত করুন

TESTVAR="no export"
export MYTESTVAR="with export"

তারপরে একটি নতুন শেল খুলুন।

চলমান echo $TESTVARএবং echo $MYTESTVARপ্রতিটি ভেরিয়েবলের বিষয়বস্তু প্রদর্শন করবে। এখন সেই একই শেলের ভিতরে আপনার .bashrc ফাইল থেকে সেই দুটি লাইন সরান এবং bashসাবসেল শুরু করতে চালান ।

চলমান echo $TESTVARএকটি খালি আউটপুট হবে, কিন্তু চলমান echo $MYTESTVAR"রপ্তানি সঙ্গে" প্রদর্শন করা হবে

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