সমস্ত ভেরিয়েবলের নাম এবং তাদের বর্তমান মানগুলি কীভাবে তালিকাভুক্ত করবেন?
না শুধুমাত্র $HOME
, $PWD
ইত্যাদি অন্তর্ভুক্ত কিন্তু আপনি সংজ্ঞায়িত অন্য যে কোন।
সমস্ত ভেরিয়েবলের নাম এবং তাদের বর্তমান মানগুলি কীভাবে তালিকাভুক্ত করবেন?
না শুধুমাত্র $HOME
, $PWD
ইত্যাদি অন্তর্ভুক্ত কিন্তু আপনি সংজ্ঞায়িত অন্য যে কোন।
উত্তর:
বাশের জন্য: (উবুন্টুতে মানক শেল)
সমস্ত পরিবেশের ভেরিয়েবল মুদ্রণের জন্য টার্মিনালে নিম্নলিখিত কমান্ডটি প্রবেশ করান:
printenv
এই আদেশ সম্পর্কে আরও তথ্যের জন্য, printenv
ম্যান পৃষ্ঠাটি পড়ুন ।
"শেল ভেরিয়েবল" সহ একটি তালিকা প্রদর্শন করতে আপনি পরবর্তী কমান্ডটি প্রবেশ করতে পারেন:
( set -o posix ; set ) | less
এটি আপনাকে কেবল শেল ভেরিয়েবলগুলিই নয়, পরিবেশের ভেরিয়েবলগুলিও প্রদর্শন করবে।
এই বিষয়ের সাথে সম্পর্কিত আরও তথ্যের জন্য পড়ুন:
Zsh এর জন্য: (একটি উন্নত শেল)
নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
( setopt posixbuiltin; set; ) | less
জেডএসএইচ বিকল্প সম্পর্কে আরও তথ্যের জন্য zshoptions
ম্যান পৃষ্ঠাটি দেখুন ।
MYNEWVARIABLE=Ubuntu
এবং কার্যকর printenv
করি তবে এটি সেখানে প্রদর্শিত হবে না। কেন এটি হয় এবং অন্যরা কীভাবে প্রদর্শিত হয়?
export MYNEWVARIABLE=Ubuntu
এবং এটি আপনার প্রত্যাশা অনুযায়ী কাজ করবে।
set
এটি আপনার দ্বারা তৈরি ভেরিয়েবলেরও তালিকাবদ্ধ করে। বা করset | grep myvar
printenv
এটি একটি বাহ্যিক কমান্ড, সুতরাং এটি কেবল রফতানি পরিবেশের ভেরিয়েবল সম্পর্কে (এবং মুদ্রণ) জানে। set
এটি একটি অভ্যন্তরীণ বাশ কমান্ড, সুতরাং এটি সমস্ত "শেল ভেরিয়েবল" (অপরিবর্তিত পরিবেশের ভেরিয়েবল) পাশাপাশি রফতানি পরিবেশের ভেরিয়েবলগুলি দেখায়।
unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
, তবে এটি করবে unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW
এবং এটি করবে unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW
। রফতানি ব্যবহার করে বলছে "আমি যে পরিবর্তনশীলটি সেট করছি সেটি পরিবেশের অংশ হওয়া উচিত যা প্রক্রিয়াগুলিতে চলে যায়, কেবল এই শেলটিতে একটি পরিবর্তনশীল নয়" " আমার তৃতীয় উদাহরণ বলছে "ভেরিয়েবলটি পরিবেশের অংশ হওয়া উচিত যা এই প্রক্রিয়াতে চলে আসে, তবে এরপরে আর আটকে থাকে না।"
আমি জানি যে এই প্রশ্নটি বেশ পুরানো এবং উত্তর দেওয়া হয়েছে, তবে আমি মনে করি যে আমি কিছু দরকারী তথ্য যুক্ত করতে পারি।
উপরে বর্ণিত সমস্ত পদ্ধতিতে, প্রস্তাবিত পদ্ধতিটি হ'ল:
env
, অথবা
printenv
বা যাই হোক না কেনএই সমাধানগুলির সমস্যাটি হ'ল আপনি শেলটির পরিবেশ পরিবর্তনশীলগুলি দেখতে পাচ্ছেন যা টার্মিনালে চলছে । আপনি কোনও অ্যাপ্লিকেশন চালানোর জন্য এনভায়রনমেন্ট ভেরিয়েবলগুলি দেখতে পাচ্ছেন না, উদাহরণস্বরূপ, সরাসরি গ্রাফিক ইন্টারফেসের মাধ্যমে।
এই লক্ষণীয় যদি উদাহরণস্বরূপ, আপনি আপনার ব্যবহার করা হয় ~/.profile
, অথবা .bashrc
, অথবা .zshenv
(আপনার শেল উপর নির্ভর করে) পথে ডিরেক্টরি ক্লাসিক উপরন্তু মত --- এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করতে।
অ্যাপ্লিকেশনে উপলব্ধ পরিবেশের ভেরিয়েবলগুলি সরাসরি গ্রাফিক পরিবেশে শুরু হয় তা দেখতে আপনি নিম্নলিখিতটি করতে পারেন (জিনোম শেল-এ, আমি নিশ্চিত যে অন্য সমস্ত ডিই-তে একটি সমতুল্য পদ্ধতি রয়েছে):
xterm -e bash --noprofile --norc
(অথবা, যদি আপনি না xterm
, gnome-terminal -- bash --noprofile --norc
--- ধন্যবাদ Nakis মন্তব্যের জন্য @Mike করার জন্য)।
আপনার কাছে এখন একটি শেল সহ একটি টার্মিনাল রয়েছে যা কোনও পরিবেশের ভেরিয়েবল যুক্ত করে নি। env
আপনার সমস্ত পরিবেশের ভেরিয়েবল তালিকাবদ্ধ করতে আপনি এখানে ব্যবহার করতে পারেন :
স্পষ্টতই নতুন শেলটিতে সিস্টেম ফাইলগুলি দ্বারা পরিবেশের ভেরিয়েবল যুক্ত হবে, তবে যে ভেরিয়েবলগুলি সিস্টেমের সমস্ত প্রোগ্রামে (উত্তরাধিকারসূত্রে) থাকা উচিত।
আমি এটি পোস্ট করছি কারণ আমার .pam_environment
ফাইলটি পরীক্ষা করে চতুর্থবারের মতো আমাকে আবার এই কৌশলটি সন্ধান করতে হবে। সুতরাং এখন আমি এটি দ্রুত খুঁজে পাব (এবং প্রক্রিয়াধীন, আমি আশা করি অন্য কারও সাহায্য করবে ...)
xterm -e bash --noprofile --norc
যখন আপনি উবুন্টু গ্রাফিকাল ইন্টারফেস দিয়ে শুরু করা হয় তখন স্টার্টআপ ফাইলগুলি পড়া এবং সম্পাদিত হয় না বলে আপনি কি সুপারিশ করেছিলেন? দেখুন askubuntu.com/q/1025845/1471
gnome-terminal -- bash --noprofile --norc
আপনি declare
বিল্টিন সহ সমস্ত ভেরিয়েবল দেখতে পাচ্ছেন ।
declare -p
যদি আপনি কেবল পরিবেশের পরিবর্তনশীলগুলিতে আগ্রহী হন তবে ব্যবহার করুন
declare -xp
help declare
অন্যান্য বিকল্পগুলি কী তা দেখতে দৌড়াও ।
POSIXLY_CORRECT=1 set
এবং এটি আরও উল্লেখযোগ্য যে declare
এটি alias
(সেই প্রসঙ্গে) typeset
অন্য একটি বাশ অন্তর্নির্মিত।
সঙ্গে টার্মিনালে বিভিন্ন পরিবেশের তালিকা দেখতে CTRL+ + ALT+ + Tআপনি ব্যবহার করতে পারেন env
কমান্ড।
উদাহরণ স্বরূপ :
[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja
প্রভৃতি
আশা করি এইটি কাজ করবে.
কমপেজ ব্যবহার করে ব্যাশে:
compgen -v | while read line; do echo $line=${!line};done
compgen -v | while read line; do declare -p $line; done
এখানে বেশিরভাগ সমাধানগুলি হয় কেবল পরিবেশের ভেরিয়েবলগুলি মুদ্রণ করে, বা এমন অসুবিধা রয়েছে যে env বা (সেট -o পিক্সিক্স; পিক্সিক্স) পার্সেবল আকারে মানগুলি মুদ্রণ করে না (চলক A = $ 'a \ r \ nb' মুদ্রণের চেষ্টা করুন ...) ।
এখানে একটি ফাংশন যা POSIX পালানো ফর্মটিতে সমস্ত ভেরিয়েবল, প্রতি লাইনে একটি ভেরিয়েবল মুদ্রণ করবে:
function dump_vars {
local VARNAME
compgen -v | while read -r VARNAME; do
printf "$VARNAME=%q\n" "${!VARNAME}"
done
}
কমপেজেন-ভি ব্যবহারের দিকে নির্দেশ করার জন্য @ টিএমগোব্লিনকে ধন্যবাদ।
env একটি পসিক্স 7 উপায় :
export asdf=qwer
env | grep asdf
নমুনা আউটপুট:
asdf=qwer
এটি কেবল রফতানি চলকগুলি দেখায়: অ-রফতানি ভেরিয়েবলগুলি সাধারণত "পরিবেশের ভেরিয়েবল" হিসাবে বিবেচনা করা হয় না।
ওভারটি পছন্দ করুন printenv
, যা পসিক্স নয়। উভয়ই তর্ক ছাড়াই একই কাজ করছে বলে মনে হচ্ছে: https://unix.stackexchange.com/questions/123473/ কি-is-the-differences-between-env-and- printenv
env
আরও ভাল ফর্ম্যাটিং দিয়ে আরও দৃশ্যমান হয়েছে এবং আমি আরও তথ্য যুক্ত করেছি।
প্রিন্টেনভ কেবল রফতানি ভেরিয়েবলের তালিকা করে, command+ alt+ $ ("\ e $": সম্পূর্ণ-ভেরিয়েবল) সমস্ত ভেরিয়েবলের তালিকা করে।