সর্বাধিক বহনযোগ্য উপায় export -p।
export -pরফতানি চলক তালিকা। সাধারণত ভালো হয় declare -x, যদি আপনার শেল হয়েছে declare।
বর্তমানে ব্যবহৃত বোর্ন-স্টাইলের শেলগুলি সমর্থন করা উচিত export -p, যেমন এটি পসিক্স দ্বারা প্রয়োজনীয় :
যখন -p উল্লেখিত থাকে, তবে রপ্তানি মানক আউটপুটে লিখব নাম এবং সব রপ্তানি ভেরিয়েবল মূল্যবোধ, নিম্নলিখিত বিন্যাসে:
"export %s=%s\n", <name>, <value>
যদি নামটি সেট করা থাকে এবং:
"export %s\n", <name>
যদি নামটি সেট না করা হয়।
স্ট্যান্ডার্ডটি ব্যাখ্যা করে চলেছে যে ভেরিয়েবলের মানটি এমনভাবে প্রদর্শিত হয় যা সাধারণত এটি পরে =কোনও অ্যাসাইনমেন্টের ডানদিকে ব্যবহার করতে দেয় । এটি বলা যেতে পারে যে এটি উদ্ধৃত করা যেতে পারে। বিভিন্ন শেল এগুলিকে আলাদাভাবে প্রদর্শন করতে পারে তবে একই প্রভাব সহ। export -pএমনকি declareশশগুলিতেও কাজ করে যার ড্যাশের মতো কোনও বিল্টিন নেই ।
$ dash -c 'export -p | grep HOME=' # busybox sh and other ash give the same output.
export HOME='/home/ek'
$ posh -c 'export -p | grep HOME=' # ksh93, mksh, lksh, and others give the same output.
export HOME=/home/ek
grepকম্প্যাক্টনেসের জন্য আমি আউটপুটটি পাইপ করেছি তবে আপনি যদি এটি ফিল্টার না করেন তবে আপনি আপনার রফতানি ভেরিয়েবলগুলির সম্পূর্ণ তালিকা পাবেন। আপনার প্রশ্ন থেকে মনে হচ্ছে এটি আপনাকে সবচেয়ে দরকারী বলে মনে হতে পারে।
কিছু শেল, যেমন বাশের মতো একটি মানসম্মত বিন্যাস ব্যবহার করে তবে স্পষ্টভাবে কোনও পসিক্স-অনুবর্তী পদ্ধতিতে আচরণের নির্দেশ না দেওয়া হয়। ইন বাশ ডিফল্ট export -pহিসাবে একই আউটপুট দেয় declare -x।
$ bash -c 'export -p | grep HOME='
declare -x HOME="/home/ek"
$ bash -c 'POSIXLY_CORRECT= export -p | grep HOME='
export HOME="/home/ek"
$ bash -c 'set -o posix; export -p | grep HOME='
export HOME="/home/ek"
$ bash --posix -c 'export -p | grep HOME='
export HOME="/home/ek"
$ ln -s /bin/bash sh
$ ./sh -c 'export -p | grep HOME=' # Invoking bash as sh also puts it in POSIX mode.
export HOME="/home/ek"
POSIX সামঞ্জস্যতা সক্ষম থাকলেও Zsh একটি অ-মানক ফর্ম্যাট দেখায়:
$ zsh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
$ zsh -c 'emulate -R sh; export -p | grep HOME='
typeset -x HOME=/home/ek
$ ln -s /bin/zsh sh
$ ./sh -c 'export -p | grep HOME='
typeset -x HOME=/home/ek
যে কোনও ক্ষেত্রে, আপনি কোনও শব্দ অনুসরণ করে পোর্টেবল উপস্থাপনা (যা উদ্ধৃত করা যেতে পারে) বের করতে পারেন =। এটি লাইনের পূর্ববর্তী শব্দের উপর নির্ভর করে না, যতক্ষণ না তারা তাত্ক্ষণিকভাবে পূর্ববর্তী অবস্থা না করে =, যা তাদের উচিত নয়। উদাহরণ স্বরূপ:
% export -p | grep -oE '\w+=.*'
HOME=/home/ek
LANG=en_US.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
....
মনে রাখবেন যে সমস্ত এন্ট্রি অগত্যা নয়= । এর কারণ ভেরিয়েবলগুলি আনসেট করা যায় তবে রফতানি করা যায়। এই এন্ট্রিগুলি grepউপরের কমান্ড দ্বারা ফিল্টার করা হয় , যা আপনি চান তা হতে পারে বা নাও পারে।
বেশিরভাগ সময়ে, আপনি শুধু আউটপুট পরিদর্শন করতে চান এবং যাতে আপনি পরোয়া করা হবে না এন্ট্রি পূর্বে যদি export, declare -x, typeset -x, নাকি অন্য কিছু। তারপরেই দৌড়াও export -p।
আমি প্রতিটি শেলের আনুষ্ঠানিকভাবে প্যাকেজযুক্ত সংস্করণগুলি সহ উবুন্টু 16.04 এলটিএসে এই আদেশগুলি পরীক্ষা করেছি ।