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


50

এর মধ্যে পার্থক্য কী:

a=b

এবং

export a=b

বাশে?

আমি বুঝতে পারি যে তারা উভয়ই পরিবেশের পরিবর্তনগুলি সংজ্ঞায়িত করে তবে আমি পার্থক্যটি পুরোপুরি বুঝতে পারি না।


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

আমি সংশোধন করেছি.
আদম মতান

উত্তর:


54

export সাব-প্রসেসেসে ভেরিয়েবল প্রচার করে।

উদাহরণস্বরূপ, যদি আপনি এটি করেন

FOO=bar

তারপরে একটি সাবপ্রসেস যা এফওওর জন্য পরীক্ষা করে সেখানে চলকটি খুঁজে পাবে না

export FOO=bar

উপ-প্রসেসটিকে এটি সন্ধান করার অনুমতি দেবে।

কিন্তু যদি FOOকরেছে ইতিমধ্যে একটি পরিবেশ পরিবর্তনশীল হিসেবে সংজ্ঞায়িত করা হয়েছে, তারপর FOO=barপরিবেশ ভেরিয়েবলের মান পরিবর্তন করতে হবে।

উদাহরণ স্বরূপ:

FOO=one     # Not an environment variable
export FOO  # Now FOO is an environment variable
FOO=two     # Update the environment variable, so sub processes will see $FOO = "two"

পুরানো শেল export FOO=barসিনট্যাক্স সমর্থন করে না ; আপনি লিখতে ছিল FOO=bar; export FOO


33
আসলে, আপনি যদি " export" ব্যবহার না করেন , আপনি একটি পরিবেশের পরিবর্তনশীল সংজ্ঞা দিচ্ছেন না, তবে কেবল একটি শেল ভেরিয়েবল। শেল ভেরিয়েবলগুলি কেবল শেল প্রক্রিয়াতে উপলব্ধ; পরিবেশের ভেরিয়েবলগুলি কেবল শাঁস নয়, পরবর্তী কোনও প্রক্রিয়াতে উপলব্ধ । তদতিরিক্ত, সাবশেলগুলি হ'ল বন্ধনীগুলির মধ্যে থাকা কমান্ডগুলি যা শেল ভেরিয়েবলগুলিতে অ্যাক্সেস পায়, যখন আপনি যা বলছেন তা শিশু প্রক্রিয়াগুলি শাঁস হতে পারে।
wfaulk

এগুলি কোথায় রাখা হয়?
এইচডিভি

28

আপনি যদি ব্যবহার না করেন তবে আপনি exportপরিবেশের পরিবর্তনশীল সংজ্ঞা দিচ্ছেন না; কেবল একটি শেল ভেরিয়েবল।

শেল ভেরিয়েবলগুলি কেবল শেল প্রক্রিয়াতে উপলব্ধ; পরিবেশের ভেরিয়েবলগুলি কেবল শাঁস নয়, পরবর্তী কোনও প্রক্রিয়াতে উপলব্ধ।


2

এছাড়াও, যদি আপনি রফতানি ব্যবহার না করে কলিং শেলটিতে পরিবর্তনশীল উপলব্ধ করতে চান তবে আপনি এটি করতে পারেন:

A.ksh ফাইলটি হ'ল -

#!/bin/ksh
FOO=bar

প্রম্পটে, এটি চালান

> . a.ksh

এটি একই শেলের মধ্যে কমান্ডগুলি চালিত করবে এবং $ FOO উপলব্ধ থাকবে will

যেহেতু,

> a.ksh

শুধুমাত্র a.ksh এর মধ্যে OO এফইউ উপলব্ধ হবে, a.ksh এ কল করার পরে এটি উপস্থিত থাকবে না।


1
সঠিক। মনে রাখবেন যে "." "উত্স" এর জন্য কেবল একটি শর্টকাট, যা কখনও কখনও ভাল পাঠযোগ্যতার জন্য স্ক্রিপ্টগুলিতে ব্যবহৃত হয়। "সহায়তা" দেখুন। বা বিশদের জন্য "সহায়তা উত্স"।
sleske

1

ইতিমধ্যে জবাব দেওয়া হয়েছে কি তা ছাড়াও, এই বিবৃতি উভয়ই "একটি" শেল বা পরিবেশের ভেরিয়েবল হিসাবে ইতিমধ্যে বিদ্যমান থাকতে পারে একটি পরিবেশ পরিবর্তনশীল হিসাবে অবশ্যই পরিবেশের পরিবর্তনশীল সংজ্ঞায়িত করে না (যেমন তৈরি বনাম সেট)।

পরবর্তী ক্ষেত্রে উভয় বক্তব্য কঠোর সমতুল্য।

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