සියලුම විචල්ය නම් සහ ඒවායේ වර්තමාන අගයන් ලැයිස්තුගත කරන්නේ කෙසේද?
පමණක් නොව ඇතුළු $HOME
, $PWD
ආදිය එහෙත් ඔබ අර්ථ වෙනත් ඕනෑම.
සියලුම විචල්ය නම් සහ ඒවායේ වර්තමාන අගයන් ලැයිස්තුගත කරන්නේ කෙසේද?
පමණක් නොව ඇතුළු $HOME
, $PWD
ආදිය එහෙත් ඔබ අර්ථ වෙනත් ඕනෑම.
Answers:
බාෂ් සඳහා: (උබුන්ටු වල සම්මත කවචය)
සියලු පරිසර විචල්යයන් මුද්රණය කිරීම සඳහා පර්යන්තයක පහත විධානය ඇතුළත් කරන්න:
printenv
මෙම විධානය පිළිබඳ වැඩිදුර තොරතුරු සඳහා, printenv
man පිටුව කියවන්න .
"ෂෙල් විචල්යයන්" ඇතුළුව ලැයිස්තුවක් පෙන්වීමට ඔබට ඊළඟ විධානය ඇතුළත් කළ හැකිය:
( set -o posix ; set ) | less
මෙය ඔබ පෙන්වන පමණක් නොව ද ෂෙල් විචල්ය, නමුත් පරිසරය විචල්යයන්.
මෙම මාතෘකාව හා සම්බන්ධ වැඩි විස්තර සඳහා කියවන්න:
Zsh සඳහා: (උසස් කවචයක්)
පහත විධානය භාවිතා කරන්න:
( setopt posixbuiltin; set; ) | less
ZSH විකල්ප පිළිබඳ වැඩි විස්තර සඳහා, zshoptions
man පිටුව බලන්න .
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
(ඔබේ කවචය මත පදනම්ව) භාවිතා කරන්නේ නම් මෙය කැපී පෙනේ --- මාර්ගයට සම්භාව්ය නාමාවලි එකතු කිරීම වැනි.
යෙදුමට ලබා ගත හැකි පරිසර විචල්යයන් ග්රැෆික් පරිසරය තුළ කෙලින්ම ආරම්භ කිරීම සඳහා, ඔබට පහත සඳහන් දෑ කළ හැකිය (Gnome Shell හි, අනෙක් සියලුම DE වල සමාන ක්රමයක් ඇති බව මට විශ්වාසයි):
xterm -e bash --noprofile --norc
(නැතහොත්, ඔබ සතුව නොමැති නම් xterm
, gnome-terminal -- bash --noprofile --norc
--- අදහස් දැක්වීම සඳහා ike මයික් නකිස්ට ස්තූතියි).
ඔබට දැන් පරිසර විචල්යයන් එකතු නොකළ කවචයක් සහිත පර්යන්තයක් ඇත. 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
, තවත් bash builtin.
declare -xp | grep --perl-regexp --only-match '(?<=^declare -x )[^=]+'
compgen -e
.
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 භාවිතා කරමින් bash:
compgen -v | while read line; do echo $line=${!line};done
compgen -v | while read line; do declare -p $line; done
env යනු POSIX 7 ක්රමයකි :
export asdf=qwer
env | grep asdf
නියැදි ප්රතිදානය:
asdf=qwer
එය අපනයන විචල්යයන් පමණක් පෙන්වයි: අපනයනය නොකරන ලද විචල්යයන් සාමාන්යයෙන් "පරිසර විචල්යයන්" ලෙස නොසැලකේ.
printenv
POSIX නොවන ඊට වඩා වැඩි කැමැත්තක් දක්වන්න. දෙදෙනාම තර්කයකින් තොරව එකම දේ කරන බව පෙනේ: /unix/123473/what-is-the-difference-between-env-and-printenv
env
වඩා හොඳ හැඩතල ගැන්වීමකින් එය වඩාත් දෘශ්යමාන වී තිබේ නම්, මම තවත් තොරතුරු එකතු කර ඇත්තෙමි.
මෙහි බොහෝ විසඳුම් එක්කෝ පරිසර විචල්යයන් පමණක් මුද්රණය කරයි, නැතහොත් 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 ට ස්තූතියි.
printenv අපනයනය කළ විචල්යයන් පමණක් ලැයිස්තුගත කරයි, command+ alt+ $ ("\ e $": සම්පූර්ණ විචල්ය) සියලු විචල්යයන් ලැයිස්තුගත කරයි.