বেস এ কি এক্সপোর্ট করে? [প্রতিলিপি]


73

সম্ভাব্য সদৃশ:
ব্যাশের "a = b" এবং "এক্সপোর্ট a = বি" এর মধ্যে পার্থক্য

এটি স্বীকার করা শক্ত, তবে exportপরিবেশের পরিবর্তনশীলটির সাথে ঠিক কী ঘটে তা আমি সত্যিই বুঝতে পারি নি । আমি জানি যে আমি যদি কোনও পরিবর্তনশীল রফতানি না করি তবে আমি কখনও কখনও শিশু প্রসেসগুলিতে এটি দেখতে পাই না, তবে কখনও কখনও মনে হয় আমি পারব। আমি যখন বলি তখন সত্যিই কী চলছে

export foo=5

এবং কখন আমার কোনও পরিবর্তনশীল রফতানি করা উচিত নয়?


এখানে এই বিষয়ে কমপক্ষে একটি অন্যান্য কার্যকরী প্রশ্ন একটি লিঙ্ক আছে: superuser.com/questions/143413/linux-environment-variables ... যেহেতু ব্যঙ্গ করে এই প্রশ্নের প্রথম এক যে ব্যাশ মধ্যে রপ্তানি আমার জিজ্ঞাসার জন্য Google এ popped ছিল ।
ওগ্রে গীতসংহিতা 33


একটি সাধারণ ব্যবহার হ'ল export.bashrc / .bash_profile এ অনুরূপ স্থির বিশ্বব্যাপী ভেরিয়েবলগুলি তৈরি করতে বিবৃতি যুক্ত করা $HOME
ইভান প্লেস

যত্নবান, প্রাথমিকভাবে প্রদর্শিত হওয়ার চেয়ে এই গল্পটির আরও অনেক কিছুই রয়েছে। আমি আপনাকে আমার উত্তর যাচাই করার জন্য আমন্ত্রণ জানাচ্ছি।
জেসনলোনহার্ড

উত্তর:


15

থেকে man bash:

পরিবেশ

যখন কোনও প্রোগ্রাম চালু করা হয় তখন এটিকে পরিবেশ নামে একটি স্ট্রিং দেওয়া হয়। এটি ফর্মের নাম = মানের নাম-মান জোড়ার একটি তালিকা।

শেলটি পরিবেশকে কাজে লাগানোর বিভিন্ন উপায় সরবরাহ করে। অনুরোধে, শেলটি তার নিজস্ব পরিবেশ স্ক্যান করে এবং প্রাপ্ত প্রতিটি নামের জন্য একটি প্যারামিটার তৈরি করে, স্বয়ংক্রিয়ভাবে শিশু প্রসেসগুলিতে রফতানির জন্য চিহ্নিত করে। কার্যকর করা আদেশগুলি পরিবেশের উত্তরাধিকারী। export এবং declare -x কমান্ড পরামিতি এবং ফাংশন যোগ করা হয়েছে এবং পরিবেশ থেকে মুছে যাবে করার অনুমতি দেয়। যদি পরিবেশে কোনও প্যারামিটারের মানটি সংশোধন করা হয় তবে নতুন মানটি পুরানোটিকে প্রতিস্থাপন করে পরিবেশের অংশে পরিণত হয়। যে কোনও এক্সিকিউটেড কমান্ড দ্বারা উত্তরাধিকারসূত্রে প্রাপ্ত পরিবেশটি শেলের প্রারম্ভিক পরিবেশের সমন্বয়ে গঠিত হয়, যার মানগুলি শেলের মধ্যে সংশোধন করা যেতে পারে, unset কমান্ড দ্বারা মুছে ফেলা কম জোড়া , এবং রফতানি এবং declare -xকমান্ডের মাধ্যমে কোনও সংযোজন ।


68
আইএমএইচও ডকুমেন্টেশন থেকে একটি সংক্ষিপ্ত বিবরণ স্পষ্ট করে ব্যাখ্যা করার কোনও অতিরিক্ত প্রচেষ্টা ছাড়াই উত্সাহিত করা উচিত নয়।
আর্তুর

28
সেই অংশটি খুব স্পষ্ট নয় এবং খোলামেলাভাবে আমি বুঝতে পারছি না কী চলছে।
ত্রিসমেজিস্টোস

4
@ আর্টুর: বিপরীতে: যদি (দস্তাবেজ থেকে ডকুমেন্টেশন) কোনও প্রশ্নের উত্তর দেয়, তবে আমার অতিরিক্ত বিবরণ নেই।
রেনি নিফেনিগার

1
@ রেননিফেনিগার কিন্তু মনে হয়, তা হয় না। অন্ততপক্ষে, আমি ব্লাডফিলিয়ার কোনও উত্তর না পড়া পর্যন্ত এটি পেলাম না যা গ্রহণযোগ্য হিসাবে চিহ্নিত করা উচিত।
ভ্লাদিস্লাভ রাস্ট্রুসনি

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

97

রফতানি ভেরিয়েবলগুলি শিশু প্রক্রিয়াগুলিতে প্রেরণ করা হয়, এক্সপোর্ট করা ভেরিয়েবলগুলি হয় না।


আপনি যে কোনও ডকুমেন্টেশন ইঙ্গিত করতে পারেন। আমি তার চেয়ে আরও বেশি তথ্য খুঁজছি। উদাহরণস্বরূপ, কোনও ভেরিয়েবলের কেবল একবার রফতানি করা দরকার, বা আপনার প্রতিটি পরিবর্তনের পরে রফতানি করা দরকার ইত্যাদি
চস। ওয়েন্স

1
: আপনি এই খুঁজে বার করো পারে superuser.com/questions/143413/linux-environment-variables/...
BloodPhilia

3
আপনি একটি পাথ কিছু যোগ করে এই যাচাই করতে পারেন (বলছি PYTHONPATH) এবং তারপর তিনি লক্ষ করেন যদিও আপনি করতে পারেন echo $PYTHONPATHআপনার পর্যন্ত পাইথন বা ব্যাশ স্ক্রিপ্ট দ্বারা স্বীকৃত না হয়ে যায় exportএটা
কৌশিক ঘোষ

এই উত্তরটি পুরোপুরি সত্য বলে মনে হয় না। উদাহরণস্বরূপ, বাশ সাব-শেলগুলি শিশু-প্রক্রিয়াগুলির (সেই অনুযায়ী $BASHPID) এবং তবুও আপনি প্যারেন্ট শেল থেকে অপরিবর্তিত ভেরিয়েবলগুলি পড়তে পারেন। সহজ প্রমাণ: x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x") আমার অনুমান যে এটি একটি বিশেষ কেস যা যখন শিশু প্রক্রিয়াটি একটি সাব-শেল হয় তখন ঘটে।
জেপিজেড

20

আপনি যখন ব্যবহার করবেন export, আপনি শেলটির এনভায়রনমেন্ট ভেরিয়েবল তালিকায় ভেরিয়েবল যুক্ত করছেন যেখানে রফতানি কমান্ড বলা হয়েছিল এবং শেলের সমস্ত পরিবেশের ভেরিয়েবলগুলি শিশু প্রক্রিয়াগুলিতে প্রেরণ করা হবে, তবে আপনি এটি কেন ব্যবহার করতে পারবেন তা ঠিক।

আপনি যখন শেলটি শেষ করেন তার পরিবেশটি নষ্ট হয়ে যায়, তাই পরিবেশগত ভেরিয়েবলগুলি লগইন-এ ঘোষণা করা এবং রফতানি করা হয় কেন, উদাহরণস্বরূপ .bashrc ফাইলে

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