লিনাক্স এনভায়রনমেন্ট ভেরিয়েবল সেট করা হচ্ছে


9

আমি রেড হ্যাট লিনাক্স এন্টারপ্রাইজ 5 চালাচ্ছি; পরিবেশের ভেরিয়েবলগুলি সেট করতে আমি সর্বদা এক্সপোর্ট কমান্ডটি ব্যবহার করি।

পরিবেশের ভেরিয়েবল সেট করার কোনও অন্য উপায় আছে এবং সেগুলির সুবিধাগুলি / অসুবিধাগুলি কী কী?

উত্তর:


16

এটি বাশ ম্যান পৃষ্ঠার একটি অংশ:

এক্সপোর্ট [-fn] [নাম [= শব্দ]] ...
এক্সপোর্ট -p
সরবরাহিত নামগুলি পরবর্তীকালে সম্পাদিত কমান্ডগুলির পরিবেশে স্বয়ংক্রিয় রফতানির জন্য চিহ্নিত করা হয়। যদি -f বিকল্পটি দেওয়া হয়, নামগুলি ফাংশনগুলিকে বোঝায় ...

আপনার যদি কেবলমাত্র বর্তমান পরিবেশে পরিবর্তনশীল প্রয়োজন তবে রফতানি ব্যবহার করা প্রয়োজন হয় না।

var=value

সম্পাদনা:

রফতানি ছাড়াই: কেবলমাত্র বর্তমান পরিবেশ। রফতানি সহ: বর্তমান পরিবেশ এবং শিশু পরিবেশ।

এখানে একটি শিশু পরিবেশে পরিবর্তনশীলের প্রাপ্যতার উপর রফতানীর প্রভাবের একটি প্রদর্শন রয়েছে এবং শিশু পরিবেশের পরিবর্তনগুলি পিতামাতাকে প্রভাবিত করে না:

$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []

প্রথম প্রতিধ্বনি পরে ( echo "parent...") আপনি "123" এবং "456" দেখুন উভয় কারণ var1এবং var2বর্তমান পরিবেশে সক্রিয়। আপনি এর জন্য কোনও মান দেখতে পাচ্ছেন না var3কারণ এটি এখনও সেট করা হয়নি।

" var3=..." শুরু হওয়া লাইনের পরেও আপনি কোনও মান দেখতে পাবেন না var1কারণ এটি রফতানি হয়নি। আপনি কি জন্য একটি মান দেখতে var2কারণ এটি ছিল রপ্তানি। আপনি একটি মান দেখতে পান var3কারণ এটি কেবলমাত্র শিশু পরিবেশের জন্য সেট করা হয়েছিল ।

( বিকল্পের সাথে bash -cযুক্তিগুলির বিষয়বস্তু সহ একটি স্ক্রিপ্ট চালনার সমতুল্য -cA কোনও স্ক্রিপ্ট বা অন্য নির্বাহযোগ্য বা, এক্ষেত্রে, যুক্তিটি bash -cবর্তমান পরিবেশের একটি শিশু হয়ে উঠবে যা ফলস্বরূপ, শিশুটির পিতা বা মাতা।)

"স্ক্রিপ্ট" এ ভেরিয়েবলের মান পরিবর্তন করা হয়। এটি এখন সেই নতুন মানকে ছাড়িয়ে যায়।

একবার "স্ক্রিপ্ট" শেষ হয়ে গেলে, কার্যকর কার্যকর প্যারেন্ট পরিবেশে ফিরে আসে (এই ক্ষেত্রে কমান্ড লাইন)। শেষ প্রতিধ্বনির পরে, আপনি মূল মানগুলি দেখতে পান কারণ সন্তানের পরিবেশে করা পরিবর্তনগুলি পিতামাতাকে প্রভাবিত করে না।


"বর্তমান পরিবেশে" এর অর্থ কী? বর্তমান বাশ স্ক্রিপ্ট নাকি?
জর্জ 2

1
হ্যাঁ, এর অর্থ "বর্তমান স্ক্রিপ্টে" বা "বর্তমান ইন্টারেক্টিভ সেশনে"। যাতে বর্তমান স্ক্রিপ্ট বা ইন্টারেক্টিভ সেশনের মধ্যে থেকে চালিত এক্সিকিউটেবল বা স্ক্রিপ্টগুলি বাদ দেয়। এর উদ্দেশ্য export- এই শিশু পরিবেশের জন্য ভেরিয়েবলগুলি উপলব্ধ করা।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

আপনি যা বলেছেন তা থেকে আমি কিছু বিবাদ পেয়েছি। :-) আপনি বলেছিলেন "সুতরাং এক্সিকিউটেবল বা স্ক্রিপ্টগুলি বাদ দেয়", "বাদ দিন" তে মনোযোগ দিন, তবে আপনি যা উদ্ধৃত করেছেন তাতে উল্লেখ করেছেন "সরবরাহিত নামগুলি পরবর্তীকালে সম্পাদিত কমান্ডগুলির পরিবেশে স্বয়ংক্রিয় রফতানির জন্য চিহ্নিত করা হয়।" - এটি "অন্তর্ভুক্ত" (স্বয়ংক্রিয়ভাবে রফতানি, বা প্রভাব) হতে হবে এবং "বাদ" নয়। আমি বিভ্রান্ত, আপনি দয়া করে পরিষ্কার করতে পারেন?
জর্জ 2

1
@ জর্জ 2: আরও তথ্যের জন্য আমার সম্পাদিত উত্তর দেখুন।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

3

তুমি বলেছো এটা

পরিবেশের পরিবর্তনশীল সেট করতে আমি সর্বদা এক্সপোর্ট কমান্ডটি ব্যবহার করি

আপনি যে শব্দটি দিয়েছিলেন, তাতে মনে হচ্ছে আপনি কীভাবে পরিবেশগত পরিবর্তনশীল বজায় রেখেছেন তা জিজ্ঞাসা করার চেষ্টা করছেন। এটি করার জন্য আপনার নিজের export VAR="foo"বিবৃতিটি আপনার $ HOME / .bash_profile ফাইলে রাখতে হবে (যদি আপনি ব্যাশ ব্যবহার করছেন)। আপনি যদি চান যে পরিবেশগত পরিবর্তনশীলটি সমস্ত ব্যবহারকারীর জন্যই স্থায়ী হয় তবে রুট হয়, তবে এটিকে / ইত্যাদি / প্রোফাইলে যুক্ত করুন। আপনি যদি এটি মূল ব্যবহারকারীর জন্যও যুক্ত করতে চান তবে এটি /root/.bash_profile এ সেট করুন।

এটি সমস্ত লগইন শেলগুলির জন্য কাজ করবে যেখানে বাশ পছন্দের শেল। লগইন শেলগুলির জন্য আপনার .bashrc ব্যবহার করা দরকার। অন্যান্য শেল দেওয়ার জন্য আমার কাছে অন্তর্দৃষ্টি নেই: ডি


2
এই ফাইলগুলি উত্সাহিত হওয়ার বিষয়ে আপনি বাশ ম্যান পৃষ্ঠার বিভাগটি আবার পড়তে চাইতে পারেন।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
হ্যাঁ ... আমি লগইন এবং ইন্টারেক্টিভ বিভ্রান্ত পেয়েছি। আমার উত্তর প্রতিফলিত করতে সম্পাদনা করা হচ্ছে। সংশোধনীর জন্য ধন্যবাদ!
তিমি 20'10

"পরিবেশগত পরিবর্তনশীল বজায় রাখুন" - এর অর্থ কী থাকে?
জর্জে 2

1
"পার্সিস্ট" অর্থ হ'ল প্রতিবার শেল শুরু হওয়ার সাথে সাথে আপনি এই পরিবর্তনশীলটির এই মানটি রাখতে চান। ভেরিয়েবলটির উদ্দেশ্য কী তার উপর নির্ভর করে রফতানি করা প্রয়োজন হতে পারে বা নাও হতে পারে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1
তার মানে আপনি এটি অবিচল করেন নি। তিমি যা বর্ণনা করেছে তা করার চেষ্টা করুন ।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1

রফতানি এটি করা সবচেয়ে সহজ উপায়, তবে কেন এটি এ ছেড়ে যাবেন না?

export VARIABLE=value    # for Bourne, bash, and similar shells
setenv VARIABLE value    # for csh and similar shells

2
বোর্ন শেলটির জন্য VARIABLE = মান প্রয়োজন;
বৈচিত্র্য

1
এটিও কাজ করা উচিত ...
স্ট্যাক ওভারফ্লো মারা গেছে

বাশার জন্য @ ব্লাডফিলিয়া, পরিবেশের পরিবর্তনশীল সেট করার একমাত্র উপায়?
জর্জে 2

1
@ জর্জ 2 - ভারিবেল = মান ব্যবহার করার সময়, আপনি একটি স্থানীয় ভেরিয়েবল তৈরি করছেন যা বর্তমান স্ক্রিপ্ট কার্যকর হওয়ার পরে চলে গেছে। রফতানি ব্যবহার করার সময়, বাচ্চাদের প্রক্রিয়াগুলি তাদের পিতামাতার প্রক্রিয়া থেকে পরিবর্তনশীল মানগুলি উত্তরাধিকার সূত্রে পায়। উদাহরণস্বরূপ: FOO=BAR; executethisprogram প্রোগ্রামটি executethisprogramভেরিয়েবলের মান জানতে পারবে না FOO। অন্যদিকে, ব্যবহার করার সময়: FOO=BAR; export FOO; executethisprogram প্রোগ্রামটি executethisprogramভেরিয়েবলের মান জানতে পারবে FOO
স্ট্যাক ওভারফ্লো

1
executethisprogram হয় না "রপ্তানি foo" একটি subprocess। এটি স্ক্রিপ্টের একটি সাবপ্রসেস (চাইল্ড) যা একে কল করে বা ইন্টারেক্টিভ (কমান্ড-লাইন) শেল। export FOOএকটি কমান্ড যা ভেরিয়েবলকে চিহ্নিত করে FOOযাতে কমান্ড জারি করা হয়েছিল সেই এনভ্রিয়মেন্টের শিশু প্রক্রিয়া দ্বারা এটি অ্যাক্সেস করা যায়। এই পিতামাতার স্ক্রিপ্ট বা একটি ইন্টারেক্টিভ শেল হতে পারে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

1

আপনি এর মতো কিছু করতে পারেন:

VAR=val application

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

LANG=C ls --help

ইংরাজীতে আউটপুট।

LANG=pl_PL ls --help

পোলিশ ভাষায় আউটপুট (যদি উপলব্ধ থাকে)।

পূর্ববর্তী সময়ে আপনি VAL = ভাল রফতানি করতে পারবেন না। তোমার করতেই হতো

VAL=val; export VAL

আমি "ভিএআর = ভাল অ্যাপ্লিকেশন" সম্পর্কে বিভ্রান্ত হয়েছি, ভাল বলতে কী বোঝায় এবং প্রয়োগ কী?
জর্জ 2

2
এই উদাহরণগুলি শিশু পরিবেশের জন্য চলকটির মান নির্ধারণ করে ( lsউদাহরণস্বরূপ) বর্তমান (পিতামাতার) পরিবেশে সেই পরিবর্তনশীলটির মান প্রভাবিত না করে।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

শিশুদের পরিবেশ কী? আমি দ্বিধান্বিত.
জর্জে 2

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