සියලුම විචල්ය නම් සහ ඒවායේ වර්තමාන අගයන් ලැයිස්තුගත කරන්නේ කෙසේද?


369

සියලුම විචල්ය නම් සහ ඒවායේ වර්තමාන අගයන් ලැයිස්තුගත කරන්නේ කෙසේද?

පමණක් නොව ඇතුළු $HOME, $PWDආදිය එහෙත් ඔබ අර්ථ වෙනත් ඕනෑම.



ඔබ වැරදි පිළිතුරක් පිළිගෙන ඇත. "printenv" මඟින් ඔබට ලබා දෙන්නේ පරිසර විචල්‍යයන් පමණි. ඔබගේ කවචයේ දැනට ප්‍රකාශයට පත් කර ඇති සියලුම විචල්‍යයන් ඔබට සැබවින්ම අවශ්‍ය නම්, "ප්‍රකාශ කරන්න -p" හෝ "ටයිප්සෙට් -p" භාවිතා කරන්න.
ෆ්ලොරින් ඇන්ඩ්‍රි

Answers:


505

බාෂ් සඳහා: (උබුන්ටු වල සම්මත කවචය)

සියලු පරිසර විචල්‍යයන් මුද්‍රණය කිරීම සඳහා පර්යන්තයක පහත විධානය ඇතුළත් කරන්න:

printenv

මෙම විධානය පිළිබඳ වැඩිදුර තොරතුරු සඳහා, printenvman පිටුව කියවන්න .


"ෂෙල් විචල්යයන්" ඇතුළුව ලැයිස්තුවක් පෙන්වීමට ඔබට ඊළඟ විධානය ඇතුළත් කළ හැකිය:

( set -o posix ; set ) | less

මෙය ඔබ පෙන්වන පමණක් නොව ද ෂෙල් විචල්ය, නමුත් පරිසරය විචල්යයන්.

මෙම මාතෘකාව හා සම්බන්ධ වැඩි විස්තර සඳහා කියවන්න:


Zsh සඳහා: (උසස් කවචයක්)

පහත විධානය භාවිතා කරන්න:

( setopt posixbuiltin; set; ) | less

ZSH විකල්ප පිළිබඳ වැඩි විස්තර සඳහා, zshoptionsman පිටුව බලන්න .


16
මම ටර්මිනලයට ගොස් ලිවීම MYNEWVARIABLE=Ubuntuසහ ක්‍රියාත්මක කිරීම කළහොත් printenvඑය එහි නොපෙන්වයි. එය එසේ වන්නේ ඇයි, අනෙක් අය ඒවා පෙන්වන්නේ කෙසේද?
ස්ට්‍රපකොව්ස්කි

5
බොහෝ විට ඔබ දකින්නේ ෂෙල් විචල්‍යයක් සහ පරිසර විචල්‍යයක් අතර වෙනසයි. උත්සාහ කරන්න export MYNEWVARIABLE=Ubuntu, ඔබ බලාපොරොත්තු වන පරිදි එය ක්‍රියාත්මක වනු ඇත.
Rmano

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. අපනයනය භාවිතා කිරීම පවසන්නේ "මම සැකසෙන විචල්‍යය මෙම කවචයේ විචල්‍යයක් පමණක් නොව ක්‍රියාවලීන් වෙත යොමු වන පරිසරයේ කොටසක් විය යුතු බවයි." මගේ තුන්වන උදාහරණයෙන් කියැවෙන්නේ "විචල්‍යය මෙම ක්‍රියාවලියට පිවිසෙන පරිසරයේ කොටසක් විය යුතු නමුත් පසුව එය නොගැලපේ."
බ un නෝ බ්‍රොනොස්කි

53

මෙම ප්‍රශ්නය තරමක් පැරණි හා පිළිතුරු ඇති බව මම දනිමි, නමුත් මට ප්‍රයෝජනවත් තොරතුරු ටිකක් එකතු කළ හැකි යැයි මම සිතමි.

ඉහත විස්තර කර ඇති සියලුම ක්රමවල, යෝජනා කර ඇති ක්රියා පටිපාටිය:

  • පර්යන්තයක් දියත් කරන්න
  • භාවිතා පරිසරය විචල්ය පෙන්වන්න env, හෝ printenvවෙනත් කුමන හෝ

මෙම විසඳුම්වල ගැටළුව වන්නේ ඔබ පර්යන්තය තුළට දිවෙන කවචයේ පරිසර විචල්‍යයන් දැකීමයි . යෙදුම් ධාවනය සඳහා ලබා ගත හැකි පරිසර විචල්‍යයන් ඔබ දකින්නේ නැත, උදාහරණයක් ලෙස ග්‍රැෆික් අතුරුමුහුණත මඟින්.

නිදසුනක් ලෙස, ඔබ පරිසර විචල්‍යයන් වෙනස් කිරීම සඳහා ඔබේ ~/.profile, හෝ .bashrc, හෝ .zshenv(ඔබේ කවචය මත පදනම්ව) භාවිතා කරන්නේ නම් මෙය කැපී පෙනේ --- මාර්ගයට සම්භාව්‍ය නාමාවලි එකතු කිරීම වැනි.

යෙදුමට ලබා ගත හැකි පරිසර විචල්‍යයන් ග්‍රැෆික් පරිසරය තුළ කෙලින්ම ආරම්භ කිරීම සඳහා, ඔබට පහත සඳහන් දෑ කළ හැකිය (Gnome Shell හි, අනෙක් සියලුම DE වල සමාන ක්‍රමයක් ඇති බව මට විශ්වාසයි):

  • Alt-F2 ඔබන්න
  • විධානය ක්‍රියාත්මක කරන්න xterm -e bash --noprofile --norc

(නැතහොත්, ඔබ සතුව නොමැති නම් xterm, gnome-terminal -- bash --noprofile --norc--- අදහස් දැක්වීම සඳහා ike මයික් නකිස්ට ස්තූතියි).

ඔබට දැන් පරිසර විචල්‍යයන් එකතු නොකළ කවචයක් සහිත පර්යන්තයක් ඇත. envඔබගේ සියලු පරිසර විචල්‍යයන් ලැයිස්තුගත කිරීමට ඔබට මෙහි භාවිතා කළ හැකිය :

හිස් කවචයේ උදාහරණය

නිසැකවම නව කවචයේ පද්ධති ගොනු මඟින් පරිසර විචල්‍යයන් එකතු කරනු ඇත, නමුත් එම විචල්‍යයන් පද්ධතියේ සියලුම වැඩසටහන් සඳහා (උරුමයෙන්) ලබා ගත යුතුය.

මම මෙය පළ කරන්නේ මගේ .pam_environmentගොනුව පරික්ෂා කරමින් මෙම උපක්‍රමය නැවත සෙවිය යුතු සිව්වන අවස්ථාව වන බැවිනි . දැන් මම එය වේගයෙන් සොයාගනු ඇත (සහ ක්‍රියාවලියේදී, වෙනත් කෙනෙකුට උදව් කිරීමට මම බලාපොරොත්තු වෙමි ...)


ඔබට ඩෙස්ක්ටොප් පරිසරයක් තිබීම අවශ්‍යය, සේවාදායක CLI සඳහා පමණක් සුදුසු නොවේ.
K7AAY

5
ඔව් --- නමුත් පසුව CLI සඳහා පෙර පිළිතුර පමණක් හරි. ග්‍රැෆික් පරිසරය විසින් ආරම්භ කරන ලද යෙදුමට ලබා ගත හැකි පරිසර විචල්‍යයන් පරීක්ෂා කිරීමට ඔබට අවශ්‍ය බව මම පෙන්වා දුන්නෙමි, එය ඔබ එහි පර්යන්තයක් ආරම්භ කරන විට දකින එකම කට්ටලය නොවේ. උදාහරණයක් ලෙස, ඔබේ කයිල් යෙදුමට ලාටෙක්ස් ගොනුවක් සම්පාදනය කළ නොහැක්කේ මන්දැයි ඔබ තේරුම් ගැනීමට උත්සාහ කරන්නේ නම්, ඔබට හැකි පර්යන්තයකදී, මා මෙහි පළ කළ උපක්‍රමය බොහෝ සෙයින් උපකාරී වනු ඇත.
රමානෝ

3
ඉතා ප්‍රයෝජනවත් පිළිතුරකට ස්තූතියි! මම එයට සම්බන්ධ කළේ help.ubuntu.com/community/…
Gunnar Hjalmarsson

ස්තූතියි. xterm -e bash --noprofile --norcඋබුන්ටු චිත්‍රක අතුරුමුහුණතකින් ආරම්භ කරන විට ආරම්භක ලිපිගොනු කියවා ක්‍රියාත්මක නොවන නිසා ඔබ නිර්දේශ කළාද ? Askubuntu.com/q/1025845/1471
ටිම්

1
වර්තමානයේ ක්‍රියාත්මක කිරීමට ඇති නිවැරදි විධානය (උබුන්ටු 18.04)gnome-terminal -- bash --noprofile --norc
මයික් නකිස්

52

declareබිල්ඩින් සමඟ ඔබට සියලු විචල්යයන් දැකිය හැකිය .

declare -p

ඔබ පරිසර විචල්‍යයන් ගැන පමණක් උනන්දු වන්නේ නම් භාවිතා කරන්න

declare -xp

help declareඅනෙක් විකල්ප මොනවාදැයි බැලීමට දුවන්න .


1
මෙම වඩා ක්රමවත්ව-er විසඳුම POSIXLY_CORRECT=1 setඑය බව ද සඳහන් හිමිය declareවේ aliasසඳහා (එම සන්දර්භය තුළ) typeset, තවත් bash builtin.

1
මෙය නිවැරදි පිළිතුරයි.
ෆ්ලොරින් ඇන්ඩ්‍රි

මම හිතන්නේ බොහෝ දෙනා සොයන්නේ මෙයයි.
WinEunuuchs2Unix

පහසුව සඳහා පහත දැක්වෙන bash oneliner සියළුම පරිසර විචල්‍යයන්ගේ නම් මුද්‍රණය කරයි:declare -xp | grep --perl-regexp --only-match '(?<=^declare -x )[^=]+'
maoizm

omamaizm ඔබට අවශ්‍ය වන්නේ විචල්‍ය නම් සහ වෙන කිසිවක් නොවේ නම්, ඒ සඳහා compgen භාවිතා කිරීම පහසුය. compgen -e.
geirha

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 අතපසු කරන බව මම දැක ඇත්තෙමි. විශේෂයෙන් VAR = VAL ගොනුවක් ලබාගත් පසු.
ThorSummoner

1
OrThorSummoner මෙහි ඇති පිළිතුර stackoverflow.com/questions/15474650/…
geraldc

8

Compgen භාවිතා කරමින් bash:

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

2
මෙය පිළිගත් පිළිතුර විය යුතුය, අනෙක් සියල්ලන්ම නමට වඩා ලැයිස්තු ගත කරයි. මගේ නඩුවේ සමහර විචල්‍යයන්හි බහුකාර්ය අගයන් අඩංගු වන අතර එමඟින් අනෙක් විසඳුම් කළ නොහැකි වේ.
මෙනේ

1
ප්‍රභේදයක්:compgen -v | while read line; do declare -p $line; done
එල්ජේ

3

env යනු POSIX 7 ක්‍රමයකි :

export asdf=qwer
env | grep asdf

නියැදි ප්‍රතිදානය:

asdf=qwer

එය අපනයන විචල්‍යයන් පමණක් පෙන්වයි: අපනයනය නොකරන ලද විචල්‍යයන් සාමාන්‍යයෙන් "පරිසර විචල්‍යයන්" ලෙස නොසැලකේ.

printenvPOSIX නොවන ඊට වඩා වැඩි කැමැත්තක් දක්වන්න. දෙදෙනාම තර්කයකින් තොරව එකම දේ කරන බව පෙනේ: /unix/123473/what-is-the-difference-between-env-and-printenv


මේ වන විටත් වසර දෙකකට පෙර සඳහන්: askubuntu.com/a/276162/158442
muru

ur මුරු සාධාරණයි. envවඩා හොඳ හැඩතල ගැන්වීමකින් එය වඩාත් දෘශ්‍යමාන වී තිබේ නම්, මම තවත් තොරතුරු එකතු කර ඇත්තෙමි.
සිරෝ සැන්ටිලි 冠状 病毒 审查 六四 事件 事件

ගේ එම සංස්කරණය සඳහා වේ.
මුරු

3

ඔබට ඒවා සියල්ලම මුද්‍රණය කරනවාට වඩා නිශ්චිත පරිසර විචල්‍යයක් අවශ්‍ය නම් printenv, ඔබට එය මුද්‍රණය කළ හැකියecho "$PWD"


3

මෙහි බොහෝ විසඳුම් එක්කෝ පරිසර විචල්‍යයන් පමණක් මුද්‍රණය කරයි, නැතහොත් env හෝ (set -o posix; posix) විග්‍රහ කළ හැකි ආකාරයෙන් අගයන් මුද්‍රණය නොකිරීමේ අඩුපාඩුවක් ඇත (විචල්‍යය A = $ 'a \ r \ nb' මුද්‍රණය කිරීමට උත්සාහ කරන්න ...) .

POSIX ගැලවී ගිය ස්වරූපයෙන් සියලුම විචල්‍යයන්, එක් පේළියකට එක් විචල්‍යයක් මුද්‍රණය කරන ශ්‍රිතයක් මෙන්න:

function dump_vars {
    local VARNAME
    compgen -v | while read -r VARNAME; do
        printf "$VARNAME=%q\n" "${!VARNAME}"
    done
}

Compgen -v භාවිතය පෙන්වා දීම ගැන mtmgoblin ට ස්තූතියි.


1
විශිෂ්ට පළමු පිළිතුර! +1 හොඳ වැඩ දිගටම කරගෙන යන්න!
ෆැබී

0

printenv අපනයනය කළ විචල්‍යයන් පමණක් ලැයිස්තුගත කරයි, command+ alt+ $ ("\ e $": සම්පූර්ණ විචල්‍ය) සියලු විචල්‍යයන් ලැයිස්තුගත කරයි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.