সমস্ত ভেরিয়েবলের নাম এবং তাদের বর্তমান মানগুলি কীভাবে তালিকাভুক্ত করবেন?


348

সমস্ত ভেরিয়েবলের নাম এবং তাদের বর্তমান মানগুলি কীভাবে তালিকাভুক্ত করবেন?

না শুধুমাত্র $HOME, $PWDইত্যাদি অন্তর্ভুক্ত কিন্তু আপনি সংজ্ঞায়িত অন্য যে কোন।



আপনি একটি ভুল উত্তর গ্রহণ করেছেন। "প্রিন্টেনভ" কেবল আপনাকে পরিবেশের ভেরিয়েবল দেয়। আপনি যদি সত্যিই আপনার শেলের মধ্যে ঘোষিত সমস্ত পরিবর্তনশীল চান তবে "ডিক্লেয়ার-পি" বা "টাইপসেট-পি" ব্যবহার করুন।
ফ্লোরিন আন্দ্রেই

উত্তর:


479

বাশের জন্য: (উবুন্টুতে মানক শেল)

সমস্ত পরিবেশের ভেরিয়েবল মুদ্রণের জন্য টার্মিনালে নিম্নলিখিত কমান্ডটি প্রবেশ করান:

printenv

এই আদেশ সম্পর্কে আরও তথ্যের জন্য, printenvম্যান পৃষ্ঠাটি পড়ুন


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

( set -o posix ; set ) | less

এটি আপনাকে কেবল শেল ভেরিয়েবলগুলিই নয়, পরিবেশের ভেরিয়েবলগুলিও প্রদর্শন করবে।

এই বিষয়ের সাথে সম্পর্কিত আরও তথ্যের জন্য পড়ুন:


Zsh এর জন্য: (একটি উন্নত শেল)

নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

( setopt posixbuiltin; set; ) | less

জেডএসএইচ বিকল্প সম্পর্কে আরও তথ্যের জন্য zshoptionsম্যান পৃষ্ঠাটি দেখুন


14
যদি আমি টার্মিনালে যাই এবং লিখি MYNEWVARIABLE=Ubuntuএবং কার্যকর printenvকরি তবে এটি সেখানে প্রদর্শিত হবে না। কেন এটি হয় এবং অন্যরা কীভাবে প্রদর্শিত হয়?
স্ট্রাপাকোস্কি

4
সম্ভবত আপনি শেল ভেরিয়েবল এবং এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে পার্থক্য দেখছেন। চেষ্টা করুন export MYNEWVARIABLE=Ubuntuএবং এটি আপনার প্রত্যাশা অনুযায়ী কাজ করবে।
রুমানো

3
আপনি যদি সহজভাবে সম্পাদন করেন তবে setএটি আপনার দ্বারা তৈরি ভেরিয়েবলেরও তালিকাবদ্ধ করে। বা করset | grep myvar
সের্গেই কলডিয়াজনি

4
printenvএটি একটি বাহ্যিক কমান্ড, সুতরাং এটি কেবল রফতানি পরিবেশের ভেরিয়েবল সম্পর্কে (এবং মুদ্রণ) জানে। setএটি একটি অভ্যন্তরীণ বাশ কমান্ড, সুতরাং এটি সমস্ত "শেল ভেরিয়েবল" (অপরিবর্তিত পরিবেশের ভেরিয়েবল) পাশাপাশি রফতানি পরিবেশের ভেরিয়েবলগুলি দেখায়।
ড্যান প্রিটস

1
@ স্ট্রেপাকোভস্কি-তে রমনোর জবাবকে প্রসারিত করতে ... এটি কাজ করবে না unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, তবে এটি করবে unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEWএবং এটি করবে unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW। রফতানি ব্যবহার করে বলছে "আমি যে পরিবর্তনশীলটি সেট করছি সেটি পরিবেশের অংশ হওয়া উচিত যা প্রক্রিয়াগুলিতে চলে যায়, কেবল এই শেলটিতে একটি পরিবর্তনশীল নয়" " আমার তৃতীয় উদাহরণ বলছে "ভেরিয়েবলটি পরিবেশের অংশ হওয়া উচিত যা এই প্রক্রিয়াতে চলে আসে, তবে এরপরে আর আটকে থাকে না।"
ব্রুনো ব্রোনোস্কি

52

আমি জানি যে এই প্রশ্নটি বেশ পুরানো এবং উত্তর দেওয়া হয়েছে, তবে আমি মনে করি যে আমি কিছু দরকারী তথ্য যুক্ত করতে পারি।

উপরে বর্ণিত সমস্ত পদ্ধতিতে, প্রস্তাবিত পদ্ধতিটি হ'ল:

  • একটি টার্মিনাল চালু করুন
  • ব্যবহার এনভায়রনমেন্ট ভেরিয়েবল দেন env, অথবা printenvবা যাই হোক না কেন

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

এই লক্ষণীয় যদি উদাহরণস্বরূপ, আপনি আপনার ব্যবহার করা হয় ~/.profile, অথবা .bashrc, অথবা .zshenv(আপনার শেল উপর নির্ভর করে) পথে ডিরেক্টরি ক্লাসিক উপরন্তু মত --- এনভায়রনমেন্ট ভেরিয়েবল পরিবর্তন করতে।

অ্যাপ্লিকেশনে উপলব্ধ পরিবেশের ভেরিয়েবলগুলি সরাসরি গ্রাফিক পরিবেশে শুরু হয় তা দেখতে আপনি নিম্নলিখিতটি করতে পারেন (জিনোম শেল-এ, আমি নিশ্চিত যে অন্য সমস্ত ডিই-তে একটি সমতুল্য পদ্ধতি রয়েছে):

  • Alt-F2 টিপুন
  • কমান্ড চালান xterm -e bash --noprofile --norc

(অথবা, যদি আপনি না xterm, gnome-terminal -- bash --noprofile --norc--- ধন্যবাদ Nakis মন্তব্যের জন্য @Mike করার জন্য)।

আপনার কাছে এখন একটি শেল সহ একটি টার্মিনাল রয়েছে যা কোনও পরিবেশের ভেরিয়েবল যুক্ত করে নি। envআপনার সমস্ত পরিবেশের ভেরিয়েবল তালিকাবদ্ধ করতে আপনি এখানে ব্যবহার করতে পারেন :

খালি শেলের উদাহরণ

স্পষ্টতই নতুন শেলটিতে সিস্টেম ফাইলগুলি দ্বারা পরিবেশের ভেরিয়েবল যুক্ত হবে, তবে যে ভেরিয়েবলগুলি সিস্টেমের সমস্ত প্রোগ্রামে (উত্তরাধিকারসূত্রে) থাকা উচিত।

আমি এটি পোস্ট করছি কারণ আমার .pam_environmentফাইলটি পরীক্ষা করে চতুর্থবারের মতো আমাকে আবার এই কৌশলটি সন্ধান করতে হবে। সুতরাং এখন আমি এটি দ্রুত খুঁজে পাব (এবং প্রক্রিয়াধীন, আমি আশা করি অন্য কারও সাহায্য করবে ...)


আপনার একটি ডেস্কটপ পরিবেশ প্রয়োজন, কেবলমাত্র সার্ভার সিএলআই-র লোকের জন্য কার্যকর নয়।
K7AAY

5
হ্যাঁ --- তবে তবে সিএলআইয়ের জন্য কেবল পূর্ববর্তী উত্তরটি ঠিক আছে is আমি কেবল ইঙ্গিত করছিলাম যে কোনও সময় আপনাকে গ্রাফিকাল পরিবেশ দ্বারা শুরু করা অ্যাপ্লিকেশনটির জন্য উপলব্ধ পরিবেশের ভেরিয়েবলগুলি পরীক্ষা করতে হবে যা আপনি এটিতে কোনও টার্মিনাল শুরু করার সময় দেখতে পাবেন না set উদাহরণস্বরূপ, আপনি যদি বোঝার চেষ্টা করছেন যে আপনার কিলির অ্যাপটি কেন একটি লেটেক্স ফাইল সংকলন করতে পারে না, যখন টার্মিনালে আপনি করতে পারেন, আমি এখানে পোস্ট করা ট্রিকটি অনেক সাহায্য করবে।
রোমানো

3
একটি খুব দরকারী উত্তরের জন্য ধন্যবাদ! আমি কেবল এটির সাথে যুক্ত করেছি help.ubuntu.com/commune/…
গুনার

ধন্যবাদ। xterm -e bash --noprofile --norcযখন আপনি উবুন্টু গ্রাফিকাল ইন্টারফেস দিয়ে শুরু করা হয় তখন স্টার্টআপ ফাইলগুলি পড়া এবং সম্পাদিত হয় না বলে আপনি কি সুপারিশ করেছিলেন? দেখুন askubuntu.com/q/1025845/1471
টিম

1
অধিকার কমান্ড আজকাল চালানো (উবুন্টু 18.04) হলgnome-terminal -- bash --noprofile --norc
মাইক Nakis

45

আপনি declareবিল্টিন সহ সমস্ত ভেরিয়েবল দেখতে পাচ্ছেন ।

declare -p

যদি আপনি কেবল পরিবেশের পরিবর্তনশীলগুলিতে আগ্রহী হন তবে ব্যবহার করুন

declare -xp

help declareঅন্যান্য বিকল্পগুলি কী তা দেখতে দৌড়াও ।


এটি তুলনায় অনেক ঝরঝরে সমাধান POSIXLY_CORRECT=1 setএবং এটি আরও উল্লেখযোগ্য যে declareএটি alias(সেই প্রসঙ্গে) typesetঅন্য একটি বাশ অন্তর্নির্মিত।

1
এটা সঠিক উত্তর.
ফ্লোরিন আন্দ্রেই

12

সঙ্গে টার্মিনালে বিভিন্ন পরিবেশের তালিকা দেখতে 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

প্রভৃতি

আশা করি এইটি কাজ করবে.


আমি লক্ষ্য করেছি যে env কিছু ভেরিয়েবল o_O মিস করে। বিশেষত একটি ভিএআর = ভিএল ফাইল সোসাইয়ের পরে।
থারস্মমনার

1
@ThorSummoner উত্তর এখানে সাহায্য করতে পারে stackoverflow.com/questions/15474650/...
georaldc

7

কমপেজ ব্যবহার করে ব্যাশে:

compgen -v | while read line; do echo $line=${!line};done  

2
এটি স্বীকৃত উত্তর হওয়া উচিত, কারণ অন্য সমস্ত কেবল নামের নাম ছাড়াও আরও তালিকাবদ্ধ করে। আমার ক্ষেত্রে কিছু ভেরিয়েবলের বহুবিধ মান রয়েছে যা অন্যান্য সমাধানগুলি সম্ভব হয় না।
Mene

1
একটি রূপ:compgen -v | while read line; do declare -p $line; done
এলজয়

4

এখানে বেশিরভাগ সমাধানগুলি হয় কেবল পরিবেশের ভেরিয়েবলগুলি মুদ্রণ করে, বা এমন অসুবিধা রয়েছে যে 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
}

কমপেজেন-ভি ব্যবহারের দিকে নির্দেশ করার জন্য @ টিএমগোব্লিনকে ধন্যবাদ।


1
দুর্দান্ত উত্তর! +1 ভাল কাজ চালিয়ে যান!
ফব্বি

3

env একটি পসিক্স 7 উপায় :

export asdf=qwer
env | grep asdf

নমুনা আউটপুট:

asdf=qwer

এটি কেবল রফতানি চলকগুলি দেখায়: অ-রফতানি ভেরিয়েবলগুলি সাধারণত "পরিবেশের ভেরিয়েবল" হিসাবে বিবেচনা করা হয় না।

ওভারটি পছন্দ করুন printenv, যা পসিক্স নয়। উভয়ই তর্ক ছাড়াই একই কাজ করছে বলে মনে হচ্ছে: https://unix.stackexchange.com/questions/123473/ কি-is-the-differences-between-env-and- printenv


: ইতিমধ্যে দুই বছর আগে উল্লিখিত askubuntu.com/a/276162/158442
muru

@ মুরু যথেষ্ট ন্যায্য। আশা করি এটি envআরও ভাল ফর্ম্যাটিং দিয়ে আরও দৃশ্যমান হয়েছে এবং আমি আরও তথ্য যুক্ত করেছি।
সিরো সান্তিলি :

এডিটিংয়ের জন্য এটিই ।
مورু

2

আপনি যদি নির্দিষ্ট পরিবেশ পরিবর্তনশীল চান, তবে সেগুলি মুদ্রণের পরিবর্তে printenvউদাহরণস্বরূপ এটি মুদ্রণ করতে পারেনecho "$PWD"


0

প্রিন্টেনভ কেবল রফতানি ভেরিয়েবলের তালিকা করে, command+ alt+ $ ("\ e $": সম্পূর্ণ-ভেরিয়েবল) সমস্ত ভেরিয়েবলের তালিকা করে।

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