লিনাক্স শেলটিতে ভেরিয়েবল সেট করার সময় সেট, এনভি, ডিক্লেয়ার এবং এক্সপোর্টের মধ্যে পার্থক্য কী?


17

মধ্যে পার্থক্য কি set, env, declareএবং exportযখন যেমন একটি Linux শেল একটি পরিবর্তনশীল সেটিং bash?


1
কেন এই প্রশ্নটি বাতিল হয়েছিল?
l0b0

উত্তর:


5

দেখে মনে হচ্ছে সেট আরও শক্তিশালী হওয়ায় সেট এবং ডিক্লেয়ার কিছুটা আলাদা।

Https://www.gnu.org/software/bash/manual/bash.html#Bash- বিল্টিনস ঘোষণা করে "ঘোষিত" দেখুন : "ভেরিয়েবলগুলি ঘোষণা করুন এবং তাদের বৈশিষ্ট্য দিন। যদি কোনও নাম দেওয়া না থাকে তবে ভেরিয়েবলের মানগুলি প্রদর্শন করুন পরিবর্তে.

Https://www.gnu.org/software/bash/manual/bash.html# এর অধীনে "সেট" সেট করুন: সেট - বিল্টিন * সেট: "এই বিল্টইনটি এত জটিল যে এটি তার নিজস্ব বিভাগের যোগ্য set সেট আপনাকে অনুমতি দেয় শেল বিকল্পগুলির মান পরিবর্তন করুন এবং অবস্থানগত পরামিতিগুলি সেট করুন, বা শেল ভেরিয়েবলের নাম এবং মান প্রদর্শন করতে "।

ENV হ'ল পরিবেশে একটি পরিবর্তনশীল: https://www.gnu.org/software/bash/manual/bash.html#Bash- ভেরিয়েবল env একটি লিনাক্স কমান্ড। আমি মনে করি এটি একটি ভাল রেফারেন্স: /unix/103467/ কি-is-env- command-doing

আমি ভাবলাম এটি রফতানির একটি ভাল ব্যাখ্যা ছিল: http://www.unix.com/302531838-post2.html

এছাড়াও: https://www.gnu.org/software/bash/manual/bash.html# বোর্ন- শেল- বুলেটিনস * রফতানি (বোর্ন থেকে): "প্রতিটি নাম পরিবেশে শিশু প্রসেসে পাস করার জন্য চিহ্নিত করুন" "

উপরের ইউআরএল থেকে ধার করা কোড:

root@linux ~# x=5                <= here variable is set without export command
root@linux ~# echo $x
5
root@linux ~# bash               <= subshell creation
root@linux ~# echo $x            <= subshell doesnt know $x variable value
root@linux ~# exit               <= exit from subshell
exit
root@linux ~# echo $x            <= parent shell still knows $x variable
5
root@linux ~# export x=5         <= specify $x variable value using export command
root@linux ~# echo $x            <= parent shell doesn't see any difference from the first declaration
5
root@linux ~# bash               <= create subshell again
root@linux ~# echo $x            <= now the subshell knows $x variable value
5
root@linux ~#

declareএবং setএবং env? রফতানি বনাম ঘোষণা?
প্যাসেরিয়ার

আমি এটি হ্রাস পেয়েছি কারণ এটি কেবল প্রশ্নের উত্তর দেয় না।
ড্যানিয়েল সি সোব্রাল

এটি আরও ভাল কিনা আমাকে জানান।
শান পি।

1

প্রথমত, আপনাকে অবশ্যই এটি বুঝতে হবে environment variablesএবং shell variablesএকই জিনিস নয়।

তারপরে, আপনার জানা উচিত যে শাঁসের এমন বৈশিষ্ট্য রয়েছে যা এটি পরিচালনা করে তা পরিচালনা করে। এই বৈশিষ্ট্যগুলি পরিবেশ বা শেল ভেরিয়েবল নয়।

এখন, আপনার প্রশ্নের উত্তর দিতে।

  1. env: কোনও বিকল্প ছাড়াই বর্তমান মান ভেরিয়েবলগুলি তাদের মানগুলির সাথে দেখায় ; তবে -iপতাকা সহ একটি একক কমান্ডের জন্য পরিবেশের পরিবর্তনশীল সেট করতে ব্যবহার করা যেতে পারে
  2. set: অপশন ছাড়া, প্রতিটি শেল ভেরিয়েবলের নাম এবং মান প্রদর্শিত হয় * ~ man setরেল থেকে চালানো থেকে ; শেল অ্যাট্রিবিউট সেট করতেও ব্যবহার করা যেতে পারে । এই কমান্ডের করেনা সেট পরিবেশ কিংবা শেল পরিবর্তনশীল
  3. declare: কোনও বিকল্প ছাড়াই, সমান env; শেল ভেরিয়েবল সেট করতেও ব্যবহার করা যেতে পারে
  4. export: শেল ভেরিয়েবলকে পরিবেশের পরিবর্তনশীল করে তোলে

সংক্ষেপে:

  1. set শেল এবং পরিবেশের ভেরিয়েবল সেট করে না
  2. env একটি একক কমান্ডের জন্য পরিবেশের ভেরিয়েবল সেট করতে পারে
  3. declare শেল ভেরিয়েবল সেট করে
  4. export শেল ভেরিয়েবল পরিবেশ পরিবর্তনশীল করে তোলে

নোট declare -x VAR=VAL শেল ভেরিয়েবল তৈরি করে এবং এটিকে রফতানি করে, পরিবেশগত পরিবর্তনশীল করে তোলে।

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