একটি লিনাক্স ব্যাশ টার্মিনালে, প্রায়শই অনেকগুলি পরিবেশের ভেরিয়েবলগুলি সেট করা থাকে, যেমন $PATHএবং পছন্দ করে $HOME।
সেট করা সমস্ত পরিবেশের ভেরিয়েবলগুলি কি দেখা সম্ভব? কিভাবে?
একটি লিনাক্স ব্যাশ টার্মিনালে, প্রায়শই অনেকগুলি পরিবেশের ভেরিয়েবলগুলি সেট করা থাকে, যেমন $PATHএবং পছন্দ করে $HOME।
সেট করা সমস্ত পরিবেশের ভেরিয়েবলগুলি কি দেখা সম্ভব? কিভাবে?
উত্তর:
টিএল; ডিআর: ব্যবহার(set -o posix ; set)
বাশ ম্যানুয়াল অনুসারে আপনি বিল্ট-ইন কমান্ডটি সমস্ত পরিবেশের ভেরিয়েবলগুলি সেট করে দেখানোর জন্য ব্যবহারset করতে পারেন । setকমান্ড যে কোনো ফাংশন সংজ্ঞা প্রদর্শন করা হবে। আপনি যদি কেবল ভেরিয়েবলগুলি দেখতে চান এবং না ফাংশনগুলি দেখতে চান তবে আপনি সেট কমান্ডটি চালানোর আগে পসিক্স মোডটি চালু করতে পারেন। এটি করার সবচেয়ে সহজ set -o posixউপায়টি হল তবে এটি প্যাসিক্স মোডটি ছেড়ে দেবে যতক্ষণ না আপনি এটিকে বন্ধ করে দেন set +o posix।
অতএব, নীচের কমান্ডটি আপনার বর্তমান শেলের মধ্যে পসিক্স সম্মতিকে প্রভাবিত না করে সাব-শেল ব্যবহার করে সংজ্ঞায়িত পরিবেশের সমস্ত পরিবর্তনশীল দেখায় will
(set -o posix ; set)
@ রেডগ্রিটিব্রিক এবং @iglvzx envকমান্ডটি ব্যবহারের পরামর্শ দিয়েছিল , তবে এই কমান্ডটি পরিবেশের ভেরিয়েবলগুলির সম্পূর্ণ তালিকা সরবরাহ করবে না। envরফতানির জন্য চিহ্নিত চিহ্নিত ভেরিয়েবলগুলি কেবলমাত্র প্রদর্শন করবে। আউটপুট তুলনা করুন env | sortএবং export -pএবং আপনি আমি বলতে চাচ্ছি তা দেখতে হবে। comm -23 <(set -o posix; set) <(env|sort)কোন পরিবেশের ভেরিয়েবলগুলি রফতানি হচ্ছে না তা আপনি দেখতে চাইলে চালাতে পারেন।
ভিন্নতার কারণ হ'ল এটি envএকটি পৃথক নির্বাহযোগ্য setযা এর বিপরীতে শেল বিল্ট-ইন কমান্ড। বাশ ম্যানুয়াল অনুসারে, যখন কোনও কমান্ড কার্যকর করা হয় যা শেল অন্তর্নির্মিত কমান্ড বা ফাংশন নয় এটি কেবল পরিবেশের ভেরিয়েবলগুলি পাবে যা বাশ রফতানির জন্য চিহ্নিত হয়েছে । এমন অনেকগুলি ভেরিয়েবল রয়েছে যা রফতানি হয় না। সুতরাং, আপনি যদি শেল দ্বারা সংজ্ঞায়িত সমস্ত ভেরিয়েবল দেখতে চান তবে আপনাকে setম্যানুয়ালটিতে বর্ণিত কমান্ডটি ব্যবহার করতে হবে ।
নিম্নলিখিত কমান্ডগুলি ব্যবহার করে আপনি নিজের জন্য এই আচরণটি সহজেই পরীক্ষা করতে পারেন।
MY_TEST_VARIABLE="This is my test variable."
set | grep MY_TEST_VARIABLE
env | grep MY_TEST_VARIABLE
আপনি দেখবেন যে setআউটপুট প্রদান envকরে না যখন না।
envকোন যুক্তি দিয়ে কমান্ড "রপ্তানি" এনভায়রনমেন্ট ভেরিয়েবল এবং তাদের মূল্যবোধের তালিকা প্রিন্ট করা হবে। এই ভেরিয়েবলগুলি উপ-প্রক্রিয়াগুলির জন্য দৃশ্যমান করা হয় - অন্যান্য অনেক পরিবেশের ভেরিয়েবলগুলি এটির সাথে প্রদর্শিত হয় না এবং কেবল চলমান শেলের ভিতরেই ব্যবহৃত হয়, যেমন কনফিগারেশনের জন্য।
printenv, উভয় থেকে envএবং setমাত্র পরিবেশ outputting ছাড়া অন্য ফাংশন আছে।
envরফতানির জন্য চিহ্নিত পরিবেশগত ভেরিয়েবলগুলির কেবলমাত্র একটি তালিকা মুদ্রণ করবে। এটি সমস্ত ভেরিয়েবল মুদ্রণ করবে না।
compgen -v
শেল ভেরিয়েবল মুদ্রণ করে (তবে মানগুলি হয় না)।
compgen -e
প্রিন্টগুলি রফতানি ভেরিয়েবল অর্থাত্ যেগুলি প্রক্রিয়া দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয় এই শেলটি শুরু হয় (তবে তাদের মানগুলি হয় না)।
শেল এবং রফতানি হওয়া ভেরিয়েবলের মধ্যে পার্থক্য: https://unix.stackexchange.com/questions/3507/differences-between-en वातावरण-variables-and-exporter-enਵਰ্টার-variables-in-b?rq=1
compgen -eআমি যা চেয়েছিলাম ঠিক তাই!