පරිසර විචල්‍යයන් එකතු කරන්නේ කෙසේද?


435

මම උබුන්ටු 11.04 ධාවනය කරනවා. මම බාෂ් සැසියක් ආරම්භ කිරීමට ටර්මිනලය භාවිතා කරන අතර පරිසර විචල්‍යයක් එක් කිරීමට මට අවශ්‍යය:

$r@hajt:~$ env THEVAR=/example

නමුත් එය ක්‍රියාත්මක නොවේ. එය THEVAR සමඟ ඇති සියලුම විචල්‍යයන් අන්තිම එක ලෙස පෙන්වයි, නමුත් තවත් ඇමතුමක් තවදුරටත් envනොපෙන්වයි- කිසිවක් ලබා THEVARනොදේ env | grep THEVAR.

ඒ හා සමානව, අපනයන ( export THEVAR=/example) හෝ වෙනත් විචල්‍ය පැවරුම් ( THEVAR=/example) සහිත ස්ක්‍රිප්ට් පරිසර විචල්‍යය එක් නොකරයි.

මම දන්නවා මම යම්කිසි වැරැද්දක් කරන බව, එය සරල දෙයක් විය යුතු බව මම දනිමි, නමුත් මට එය සොයාගත නොහැක.

යාවත්කාලීන කිරීම: මගේ ප්‍රශ්නයේ සැබෑ අරුත මෙයයි: /programming/496702/can-a-shell-script-set-en Environment-variables- of-the- call-shell

(කෙසේ හෝ මම වඩාත්ම ඡන්දය දුන් පිළිතුර තෝරාගෙන සංස්කරණය කළ මාතෘකාවෙන් ඉවත් වෙමි - එය මා ඉල්ලා සිටියේ නොවේ)

env නවීකරණය කරන ලද පරිසරයක වැඩසටහනක් ධාවනය කරයි, පසුව සියලු වෙනස්කම් බැහැර කරයි.


1
.Bashrc හි නිර්වචනය / අපනයනය කළ විට එය නිසියාකාරව ක්‍රියාත්මක වේ.
හෆ්


1
කොහොමද THEVAR=/example?
ඔලේ ප්‍රිපින්

2
අනෙක ගෝලීය විචල්‍යයන් ගැන ය, මෙය එවැනි සීමාවක් එක් නොකරයි. මම එය වෙනම තබා ගන්නම්.
ලෙකන්ස්ටයින්

Answers:


682

වත්මන් කවචය සඳහා පමණක් විචල්‍යය සැකසීමට :

VARNAME="my value"

වත්මන් කවචය සඳහා එය සැකසීමට සහ සියලුම ක්‍රියාදාමයන් වත්මන් කවචයෙන් ආරම්භ විය:

export VARNAME="my value"      # shorter, less portable version

අනාගත සියලුම බාෂ් සැසි සඳහා එය ස්ථිර ලෙස සැකසීමට .bashrcඔබේ $HOMEඩිරෙක්ටරියේ ඇති ගොනුවට එවැනි පේළියක් එක් කරන්න .

එය ස්ථිර ලෙස සැකසීමට, සහ පද්ධතිය පුරා (සියලුම පරිශීලකයින්, සියලු ක්‍රියාවලි) / etc / environment හි සැකසුම් විචල්‍යය එක් කරයි:

sudo -H gedit /etc/environment

මෙම ගොනුව පිළිගන්නේ වැනි විචල්‍ය පැවරුම් පමණි:

VARNAME="my value"

exportමෙහි මූලික පදය භාවිතා නොකරන්න .

ඔබ වත්මන් පරිශීලකයාගෙන් ඉවත් වී නැවත පුරනය වීමට අවශ්‍ය වන බැවින් පරිසර විචල්‍ය වෙනස්කම් සිදු වේ.


35
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session. help.ubuntu.com/community/En EnvironmentVariables
SudoSURoot

1
H හයිඩ් මහතා ඔව්, එය බොහෝ විට සාධාරණ ස්ථානයක් විය හැකිය
මයිකල් Šrajer

1
Har භාරද්වාජ්රාජු සමහර පැරණි යුනික්ස් පද්ධති මත කෙනෙකුට දැනටමත් අපනයනය කළ හැකි විචල්‍යය පමණක් අපනයනය කළ හැකිය. පැරණි සොලාරිස් සහ HP-UX උදාහරණයක් ලෙස.
මයිකල් łrajer

1
ඔබ පරිසර විචල්‍යය සැකසූ පසු, එය සකසා ඇති බව තහවුරු කර ගැනීම සඳහා මම එය ඉක්මණින් නැරඹිය හැක්කේ කෙසේද?
රොඩ්

1
OdRodecho $myvar
Qwerty

36

පරිසර විචල්‍යයක් වරක් සැකසීමට, exportවිධාන පුවරුවේ නොව විධාන පුවරුවේ විධානය භාවිතා කරන්න :

$ export THEVAR=/example

විචල්යය ෂෙල් සැසියේ ඉතිරි කාලය සඳහා හෝ සැකසූ තෙක් සකසනු ඇත.

සෑම විටම පරිසර විචල්‍යයක් සැකසීමට, ගොනුවේ exportවිධානය භාවිතා .bashrcකරන්න (හෝ ඔබේ කවචය සඳහා සුදුසු ආරම්භක ගොනුව).

ස්ක්‍රිප්ට් එකකින් පරිසර විචල්‍යයක් සැකසීමට, ස්ක්‍රිප්ටයේ exportවිධානය භාවිතා කරන්න , ඉන්පසු sourceස්ක්‍රිප්ට් එක භාවිතා කරන්න. ඔබ ස්ක්‍රිප්ට් ක්‍රියාත්මක කළහොත් එය ක්‍රියා නොකරනු ඇත.

මූලාශ්‍රය සහ ක්‍රියාත්මක කිරීම අතර වෙනස පැහැදිලි කිරීම සඳහා මෙම පිළිතුර බලන්න: /superuser/176783/what-is-the-difference-between-execiting-a-bash-script-and-sourcing-a- bash-script / 176788 # 176788


4
පිටපත ක්‍රියාත්මක කිරීමෙන් පමණක් එය ක්‍රියාත්මක කරන්නේ කෙසේද? මූලාශ්‍ර නොමැතිව.
මිත්‍රිල්

21

උබුන්ටු හි නව පරිසර විචල්‍යයක් ස්ථිරවම එක් කිරීමට (14.04 දී පමණක් පරීක්ෂා කර ඇත), පහත පියවර භාවිතා කරන්න:

  1. පර්යන්තයක් විවෘත කරන්න (එබීමෙන් CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. ඔබගේ මුරපදය ටයිප් කරන්න
  4. දැන් විවෘත කර ඇති පෙළ ගොනුව සංස්කරණය කරන්න:
    උදා: ඔබට එකතු කිරීමට අවශ්‍ය නම් FOO=bar, FOO=barනව පේළියක ලියන්න
  5. එය සුරකින්න
  6. සුරකින ලද පසු, ඉවත් වී නැවත පුරනය වන්න.
  7. ඔබට අවශ්‍ය වෙනස්කම් සිදු කර ඇත.

6
වඩා භයානක බිටු ඉවත් කරමින් මම ඔබේ පිළිතුර පිරිසිදු කර ඇත්තෙමිsudo gedit ( askubuntu.com/questions/270006/… බලන්න ) සහ chmod 777. දෙවැන්න කිසි විටෙකත් පද්ධති වින්‍යාස ගොනුවක සිදු නොකළ යුතුය.
මුරු

සමහර අවස්ථාවන්ට මෙය නිවැරදි පිළිතුරකි. සියලුම සැසි, පරිශීලක ෂෙල් සැසි වේවා නැතත් මෙහි සකසා ඇති විචල්‍යයන්ගේ වටිනාකම ලැබෙනු ඇත. එය මේ ෂෙල් තිර රචනය වගේ විය හැකි නමුත්, එය නොවන බව සටහන් කිරීම වැදගත් - එය පමණක් කට්ටලයක් පරිසරය විචල්යයන් (වගේ ෂෙල් කාර්යයන් භාවිතා එදිරිව කිරීමට ඉඩ දේ ifහෝ test)
ටොම් හැරිසන් Jr

තීරුව නූලක් නම්, මම එය උද්ධෘත ලකුණු අතර තැබිය යුතුද? කැමතිද Foo="bar"?
blue_chip

lblue_chip නැත, උපුටා දැක්වීම් නොමැතිව ක්‍රියා කරයි.
Upvote

4
පරිසර විචල්‍යයන් සඳහා lblue_chip, සියල්ල නූල් ය. ඔබට උපුටා දැක්වීම් අවශ්‍ය වන්නේ එහි අවකාශයන් ඇති විට පමණි.
රුස්ලාන්

10

ස්ක්‍රිප්ට් එක සම්පුර්ණ වූ පසු නොනැසී පැවතීමට පරිසරය / විචල්‍ය වෙනස්කම් ලබා ගැනීම සඳහා, ඔබ භාවිතා කළ යුතුය source ./script.shහෝ ප්‍රභවය සඳහා කෙටිමං අංකනය, ".", වැනි. ./script.sh

මූලාශ්‍රය ස්ක්‍රිප්ටයේ විධාන ඔබ ටයිප් කළ ආකාරයට ක්‍රියාත්මක කරයි ... එබැවින් එය පිටවීම වැනි ස්ක්‍රිප්ටයේ සමහර අංග වෙනස් කරයි ... එබැවින් ඔබේ ස්ක්‍රිප්ට් යමක් පරීක්ෂා කර වැරදි නම් පිටවීමට තීරණය කරන්නේ නම්, උදාහරණයක් ලෙස, ඇමතුම හරහා exit 0, එය ඔබගේ වර්තමාන පර්යන්තය / ෂෙල් සැසිය අවසන් කරයි.


මෙය දැනටමත් පිළිගත් පිළිතුරක් සහ තවත් කිහිපයක් ඇති ඉතා පැරණි ප්‍රශ්නයකි ... කරුණාකර වඩාත් මෑත ප්‍රශ්න වලට පිළිතුරු සපයන්න ...
නර්ඩ් ඕෆ්කෝඩ්

3
ErNerdOfCode මෙම පිළිතුර තවමත් අදාළ වන ගැටලුවකට ආමන්ත්‍රණය කරන අතර පිළිගත් පිළිතුර ඇතුළුව වෙනත් කිසිදු පිළිතුරක් මට පෙනෙන පරිදි එය සඳහන් කරන්න ... ඇත්ත වශයෙන්ම පැරණි ප්‍රශ්නවලට හොඳ පිළිතුරු සැපයීම සඳහා ලාංඡන දෙකක් තිබේ, එබැවින් මෙය දිරිමත් කරනු ලැබේ
Zanna

1
මෙය හරියටම මා සොයන දෙයයි. ස්ක්‍රිප්ට් එකෙන් අපනයනය කළ විචල්‍යයන් පිටපතෙන් බැලීමට මට අවශ්‍ය විය.
ඇල්බන්ක්ස්

ErNerdOfCode පෘථිවියේ සිටින ඔබට අමතර තොරතුරු සැපයීමෙන් යමෙකු අධෛර්යමත් කරන්නේ කෙසේද? මෙම පිළිතුර මගේ සියලු ගැටලු විසඳීය!
ලූකා ෆගියෝලි

6

මම දන්නවා එය ප්‍රමාද වැඩියි, නමුත් ඔබට සියලු පරිශීලකයින් සඳහා පරිසර විචල්‍යයක් එක් කිරීමට අවශ්‍ය නම් (උදා: ජාවා භාවිතය) - ඔබට පහත සඳහන් දෑ කළ හැකිය:

1) /etc/bash.bashrcනැනෝ භාවිතයෙන් විවෘත කරන්න (ඔබට ඕනෑම සංස්කාරකයක් භාවිතා කළ හැකිය, පරිශීලක සුහදතාව සම්බන්ධයෙන් එය නරකම බැවින් මම VIM වලට කැමති නැත - පුද්ගලික කිසිවක් නැත).

2) ගොනුවට එකතු කරන්න:

export VAR=path export PATH=$PATH:/bin 3) (ඔබට කොටුව තල්ලු කළ හැකි නම් වඩා හොඳය) - නැතහොත් නව SSH සැසියක් විවෘත කර `env 'විධානය භාවිතා කර තහවුරු කරන්න.

නමුත් මේ සඳහා එක් එක් පරිශීලකයාට වෙනම සැකසුමක් අවශ්‍ය නම්, ඔබ .bashrcයටතේ ගොනු කිරීම සඳහා වෙනසක් (ස්ක්‍රිප්ට්) කළ යුතුය ~/.bashrc(හෝ /home/$USER/ඔබ ලිනක්ස් පද්ධති වලට අලුත් නම්)


මෙය මගේ නිවැරදි කිරීමට මට උපකාරී විය ~/.bashrc. ඔබ පවසන පරිදි, එය එසේ විය යුතු බව පෙනේ PATH=$PATH:/bin, මට වැඩ $PATH:/bin=PATHකළ බවක් පෙනෙන්නට තිබුණත් දෝෂ ඇති විය.
sdexp

5

ඔබ ස්ක්‍රිප්ට් හරහා දේවල් කරන්නේ නම්, පරිසර විචල්‍යය ස්ථිර ලෙස සැකසීමට එක් පහසු ක්‍රමයක් ඔබේ ස්ක්‍රිප්ටයේ ප්‍රකාශයට පහළින් තබා ඇත,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

ඔබට pwd වැනි ප්‍රකාශන ඇගයීමට අවශ්‍ය නම්, ඔබට මෙය භාවිතා කළ හැකිය, උදාහරණයක් ලෙස,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
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.