'এক্সপোর্ট' কমান্ড কী করে?


86

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

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

ধন্যবাদ!


4
আপনি যে রফতানি কমান্ডটি ব্যবহার করেছেন সে সম্পর্কে যদি আরও কিছু বলেন তবে এটি সহায়তা করবে। আরও প্রসঙ্গ ব্যতীত, আমি অনুমান করব যে আপনি একটি পরিবেশের পরিবর্তনশীল সেট করছেন। দেখুন en.wikipedia.org/wiki/Environment_variable#Unix
জশুয়া ডি বয়েড


উত্তর:


99

exportইন shএবং সম্পর্কিত শেল (যেমন bash), শিশু-প্রক্রিয়াগুলিতে রফতানি করার জন্য পরিবেশের পরিবর্তনশীল চিহ্নিত করে, যাতে শিশু তাদের উত্তরাধিকার সূত্রে পায়।

exportPOSIX এ সংজ্ঞায়িত করা হয়েছে :

শেলটি নির্দিষ্ট নামগুলির সাথে সম্পর্কিত ভেরিয়েবলগুলিতে রফতানীর বৈশিষ্ট্য দেবে, যার ফলে পরবর্তীকালে সম্পাদিত কমান্ডগুলির পরিবেশে তাদের উপস্থিতি ঘটবে। যদি কোনও ভেরিয়েবলের নাম = শব্দ দ্বারা অনুসরণ করা হয় তবে তার পরিবর্তকের মানটি শব্দের সাথে সেট করা হবে।


অনেক ধন্যবাদ! আপনার সমস্ত উত্তর সত্যই সহায়ক ছিল এবং তারা আরও কয়েকটি জিনিস শিখতে গাইড করে! :-)
চথুরা কুলসিংহে

4
এই অর্থে একটি শিশু প্রক্রিয়া কি?
AsyncMoksha

@ মার্টিনহানসেন আপনি কি বুঝতে পারছেন না? এছাড়াও, আমার উত্তর দেখুন।
বারলোপ

লিঙ্কের শেষে একটি অতিরিক্ত বর্গাকার বন্ধনী রয়েছে, আমি এটি সম্পাদনা করতে পারছি না, কারণ এটি এক-প্রতীকী সম্পাদনা :)
রাদোস্লাভ স্টোয়ানভ ২

28

আমার ধারণা আপনি একটি উইন্ডোজ পটভূমি থেকে এসেছেন। সুতরাং আমি তাদের বিপরীতে করব (আমি লিনাক্সেও এক নতুন ধরনের)) জিনিসগুলি খুঁজে বের করতে কার্যকর হতে আমি আমার মন্তব্যে ব্যবহারকারীর জবাব পেয়েছি।

উইন্ডোজে ভেরিয়েবল স্থায়ী হতে পারে বা নাও হতে পারে। পরিবেশ পরিবর্তনশীল শব্দটি এসইটি কমান্ডের সাহায্যে সিএমডি শেলটিতে একটি পরিবর্তনশীল সেট অন্তর্ভুক্ত করে, পাশাপাশি যখন ভেরিয়েবলটি উইন্ডোজ জিইউআইয়ের মধ্যে সেট করা থাকে, এভাবে রেজিস্ট্রিতে সেট করা হয় এবং নতুন সিএমডি উইন্ডোতে দৃশ্যমান হয়। উদাহরণস্বরূপ উইন্ডোজে সেট কমান্ডের জন্য ডকুমেন্টেশন https://technet.microsoft.com/en-us/library/bb490998.aspx "পরিবেশের ভেরিয়েবলগুলি প্রদর্শন করে, সেট করে বা মুছে ফেলে para পরামিতি ব্যতীত ব্যবহৃত, সেটটি বর্তমান পরিবেশ সেটিংস প্রদর্শন করে।" লিনাক্সে, সেট পরিবেশের ভেরিয়েবলগুলি প্রদর্শন করে না, এটি শেল ভেরিয়েবলগুলি প্রদর্শন করে যা এটি কল করে না / এনভায়রনমেন্ট ভেরিয়েবল হিসাবে উল্লেখ করে। এছাড়াও, লিনাক্স ভেরিয়েবল সেট করার জন্য সেট ব্যবহার করে না (অবস্থানের পরামিতি এবং শেল বিকল্পগুলি বাদ দিয়ে, যা আমি শেষে নোট হিসাবে ব্যাখ্যা করি), কেবল সেগুলি প্রদর্শন করতে এবং তারপরে কেবল শেল ভেরিয়েবলগুলি প্রদর্শন করতে। উইন্ডোজ সেটিং এবং প্রদর্শনের জন্য সেট ব্যবহার করে যেমন একটি = 5 সেট করে, লিনাক্স দেয় না doesn't

লিনাক্সে, আমি অনুমান করি আপনি এমন একটি স্ক্রিপ্ট তৈরি করতে পারেন যা বুটআপে ভেরিয়েবল সেট করে, যেমন /etc/profileবা/etc/.bashrc অন্যথায়, সেগুলি স্থায়ী নয়। এগুলি র‌্যামে সংরক্ষিত আছে।

শেল ভেরিয়েবল এবং এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে লিনাক্সের মধ্যে একটি পার্থক্য রয়েছে। লিনাক্সে, শেল ভেরিয়েবলগুলি কেবল বর্তমান শেলের মধ্যে থাকে এবং পরিবেশের ভেরিয়েবলগুলি সেই শেল এবং সমস্ত শিশু শেলগুলিতে থাকে।

setকমান্ডের সাহায্যে শেল ভেরিয়েবলগুলি দেখতে পাবেন (যদিও লক্ষ করুন যে উইন্ডো থেকে ভিন্ন, ভেরিয়েবলগুলি সেট কমান্ডের সাথে লিনাক্সে সেট করা নেই)

set -o posix; set (প্রথমে একবার সেট-পো পিক্সিং করা খুব বেশি অপ্রয়োজনীয় জিনিস প্রদর্শন করতে সহায়তা করে না)। তাইset শেল ভেরিয়েবল প্রদর্শন করে।

আপনি এর সাথে পরিবেশের পরিবর্তনগুলি দেখতে পারেন env কমান্ডটি

শেল ভেরিয়েবলগুলি উদাহরণস্বরূপ সেট করা হয় just a = 5

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

এখানে আপনি zzz = 5 এর সাথে শেল ভেরিয়েবল zzz সেট দেখেন এবং চলমান অবস্থায় এটি দেখায় set তবে পরিবেশের ভেরিয়েবল হিসাবে প্রদর্শিত হয় না।

এখানে আমরা yyy রফতানির সাথে সেট দেখি, সুতরাং এটি পরিবেশের পরিবর্তনশীল। এবং এটি শেল ভেরিয়েবল এবং এনভায়রনমেন্ট ভেরিয়েবল উভয়ের অধীনে দেখায়

$ zzz=5

$ set | grep zzz
zzz=5

$ env | grep zzz

$ export yyy=5

$ set | grep yyy
yyy=5

$ env | grep yyy
yyy=5

$

অন্যান্য দরকারী থ্রেড

/unix/176001/how-can-i-list-all-shell-variables

/ubuntu/26318/enomot-variable-vs-shell-variable-what-the-differences

দ্রষ্টব্য- একটি পয়েন্ট যা কিছুটা বিস্তৃত হয় এবং আমি যেটা লিখেছি তার সাথে কিছুটা সংশোধনযোগ্য, তা হল, লিনাক্স ব্যাশে 'সেট' ব্যবহার করা যেতে পারে "পজিশনাল প্যারামিটার" এবং "শেল অপশন / বৈশিষ্ট্য", এবং প্রযুক্তিগতভাবে উভয়ই এগুলি ভেরিয়েবল, যদিও ম্যান পেজগুলি সেগুলি এর মতো বর্ণনা করে না। তবে এখনও, যেমনটি উল্লেখ করা হয়েছে, সেট শেল ভেরিয়েবল বা পরিবেশের ভেরিয়েবল সেট করবে না)। আপনি যদি set asdf তবে এটি এসডিএফের জন্য 1 ডলার নির্ধারণ করে, এবং যদি আপনি echo $1এসেডিএফ দেখতে পান। যদি তুমি করোset a=5এটি ভেরিয়েবলটি সেট করবে না, সমান 5 5. এটি অবস্থানিক প্যারামিটার $ 1 সেট করবে "a = 5" এর স্ট্রিংয়ের সমান। সুতরাং আপনি যদি কখনও লিনাক্সে একটি = 5 সেট করতে দেখেছেন তবে এটি সম্ভবত ভুল হয়েছে যদি না কেউ that 1 এ আসলে স্ট্রিং a = 5 চায়। লিনাক্সের সেটটি সেট করতে পারে এমন অন্য জিনিসটি হ'ল শেল বিকল্প / বৈশিষ্ট্য। আপনি যদি সেট-ও করেন তবে আপনি তাদের একটি তালিকা দেখতে পাবেন। এবং আপনি উদাহরণস্বরূপ করতে পারেনset -o verbose, বন্ধ, ভার্বোস চালু করতে (বিটিডব্লিউ ডিফল্টটি বন্ধ হয়ে যায় তবে এটি এর সাথে কোনও পার্থক্য রাখে না)। অথবা আপনি set +o verboseভার্বোস বন্ধ করতে করতে পারেন । উইন্ডোজ এর সেট কমান্ডের জন্য এরকম কোনও ব্যবহার নেই।


সেটটি শেল এবং এনভায়রনমেন্ট দেখায় এবং 'এনভি' কেবল পরিবেশ দেখায়
বারলপ

4
এই উত্তরটি অনেক পছন্দ করুন কারণ এটি নিক বনাম উইন কেসগুলি কভার করে যা প্রথমে বিভ্রান্তিকর হতে পারে।
এন0থিং

6

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


4
তবে যদি আমি a=5তখন বলি তবে echo $aএটি 5 বলে says তবুও আপনি লিখেছেন "যে কোনও সময় আপনি যদি ভেরিয়েবলের মানগুলি পরিবর্তন করেন তবে শেলটির সেই পরিবর্তন বাছাইয়ের কোনও উপায় নেই that এর অর্থ আপনি যে পরিবর্তনগুলি করেছিলেন তা নতুন শেল সেশনে কার্যকর হয়ে যায়" " । <- সুতরাং এটি কীভাবে রফতানি না করে শেল সেশনটি আপডেট করে। রফতানি যেখানে প্রয়োজনীয় সেখানে আপনি একটি উদাহরণ দিতে পারেন?
বারলপ

শেল সেশনের সময় আপনি যে ভেরিয়েবলটি সেট করেন তা হ'ল শেল ভেরিয়েবল। এটি স্থানীয় এবং বর্তমান শেল সেশনে অ্যাক্সেসযোগ্য। আপনি এটি যে কোনও সময় এটি পরিবর্তন করতে পারেন এবং এর বর্তমান মান পরিবর্তনগুলি রফতানির প্রয়োজন ছাড়াই বর্তমান শেল প্রক্রিয়াতে উপলব্ধ। অন্যদিকে পরিবেশগত ভেরিয়েবলগুলি লগইন সময় সেট করা হয়। আপনি যখন তাদের মানগুলির কোনও পরিবর্তন করেন, আপনাকে সহজ শর্তে যা করতে হবে তা বর্তমান শেল প্রক্রিয়া এবং যে কোনও নতুন শিশু প্রসেস উভয়ের জন্যই নতুন মূল্য উপলব্ধ করে রিফ্রেশ করে perform রফতানি ঠিক কী করে।
katwekibs
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.