বাশ-বিল্টিনগুলি 'সেট' এবং 'রফতানি' কী করে?


46

আমি উদ্দেশ্য হিসেবে একটি ক্ষতি একটি বিট আছি setএবং exportব্যাশ (এবং আমি সম্ভবত অন্যান্য শাঁস খুব অনুমান)।

আমি মনে করব এটি পরিবেশের ভেরিয়েবলগুলি সেট করার জন্য, তবে এটি ঠিক সাথে করা যায় VARIABLE=VALUE?

এছাড়াও টাইপ করতে setএবং exportতাদের নিজস্ব মান বিভিন্ন শো।

তাহলে তাদের উদ্দেশ্য কী?



আমি সবসময় নিম্নলিখিত দুটি দিয়ে বাশ স্ক্রিপ্ট দিয়ে শুরু করি। #! / usr / bin / env bash set -uxo পাইপফেল এই লিঙ্কটি সুন্দরভাবে একই ব্যাখ্যা করে। coderwall.com/p/fkfaqq/…
147.3k

উত্তর:


50

exportবর্তমান প্রক্রিয়া শিশুদের রফতানি, ডিফল্ট হিসাবে তারা রফতানি হয় না। উদাহরণ স্বরূপ:

$ foo=bar
$ echo "$foo"
bar
$ bash -c 'echo "$foo"'

$ export foo
$ bash -c 'echo "$foo"'
bar

setঅন্যদিকে, শেল বৈশিষ্ট্য নির্ধারণ করে, উদাহরণস্বরূপ, অবস্থানগত পরামিতি।

$ set foo=baz
$ echo "$1"
foo=baz

নোট যেটি bazবরাদ্দ করা হয়নি foo, এটি কেবল একটি আক্ষরিক অবস্থানগত পরামিতি হয়ে যায়। আরও অনেক কিছুই setকরতে পারে (বেশিরভাগ শেল অপশন), দেখুন help set

মুদ্রণ হিসাবে, exportকোন আর্গুমেন্ট সঙ্গে বলা শেল এর পরিবেশের সমস্ত ভেরিয়েবল মুদ্রণ। রফতানি করা setহয় না এমন ভেরিয়েবলগুলিও মুদ্রণ করে । এটি অন্যান্য কিছু বস্তুও রফতানি করতে পারে (যদিও আপনার এটি লক্ষ্য করা উচিত যে এটি পোর্টেবল নয়), দেখুন help export


ধন্যবাদ এটি একটি খুব দরকারী উত্তর। যাইহোক, যখন আমি ঠিক_পরে_প্রক্সি = abc.com দিয়ে http_proxy সেট করি তখন এটি শিশু প্রসেসগুলিতে দৃশ্যমান হয়, যেমন আমাকে চালিয়ে না দিয়ে উইজেট চালানো। এটা কিভাবে হতে পারে?
mydoghasworms

2
@mydoghasworms দুটি সম্ভাব্য কারণ। এক, আপনি যেমন কমান্ড চালাচ্ছেন foo=bar command। এটি একটি একক কমান্ডের জন্য অন্তর্নিহিত রফতানি। দ্বিতীয় সম্ভাবনা হ'ল এটি http_proxyপরিবর্তন করার আগে আপনার পরিবেশে ইতিমধ্যে রফতানি করা হয়েছে।
ক্রিস ডাউন

হ্যাঁ, আপনি ঠিক বলেছেন। উজ্জ্বল, ধন্যবাদ!
mydoghasworms

6

দেখুন help set: শেল বৈশিষ্ট্য এবং অবস্থানগত বৈশিষ্ট্যগুলি সেট করতে সেট ব্যবহার করা হয়।

যে চলকগুলি রফতানি হয় না তা শিশু প্রক্রিয়াগুলির দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয় না। exportরফতানির জন্য একটি পরিবর্তনশীল চিহ্নিত করতে ব্যবহৃত হয়।

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