OS X මත පරිසර විචල්‍යයන් සැකසීම


856

OS X හි PATH වැනි පරිසර විචල්‍යයන් වෙනස් කිරීමට සුදුසුම ක්‍රමය කුමක්ද?

මම ගූගල් දෙස මඳක් බැලූ අතර සංස්කරණය කිරීමට විවිධ ගොනු තුනක් හමු විය:

  • / etc / paths
  • ~ / .ප්‍රොෆයිල්
  • ~ / .tcshrc

මෙම ලිපිගොනු සමහරක් මා සතුව නොමැති අතර , OS X දැන් bash භාවිතා කරන බැවින් .tcshrc වැරදියි කියා මට හොඳටම විශ්වාසයි . මෙම විචල්‍යයන්, විශේෂයෙන් PATH, නිර්වචනය කර ඇත්තේ කොහේද?

මම OS X v10.5 (දිවියා) ධාවනය කරමි .


env "switch.1.disabled=true" open -n /Applications/Eclipse.app/නව කට්ටල පද්ධති පරිසරයක් සමඟ GUI යෙදුම දියත් කිරීමට.
හොං

මෙයද බලන්න: stackoverflow.com/questions/25385934/…
ThomasR

Answers:


655

බ un නෝ හරි මාර්ගයේ. මම පුළුල් පර්යේෂණ සිදු කර ඇති අතර ඔබට සියලු GUI යෙදුම්වල ඇති විචල්‍යයන් සැකසීමට අවශ්‍ය නම්, ඔබේ එකම විකල්පය වේ /etc/launchd.conf.

Spotlight හරහා දියත් කරන ලද යෙදුම් සඳහා environment.plist ක්‍රියා නොකරන බව කරුණාවෙන් සලකන්න . මෙය ලේඛනගත කර ඇත්තේ ස්ටීව් සෙක්ස්ටන් විසිනි.

  1. ටර්මිනල් විමසුමක් විවෘත කරන්න

  2. ටයිප් කරන්න sudo vi /etc/launchd.conf(සටහන: මෙම ගොනුව තවමත් නොපවතිනු ඇත)

  3. පහත සඳහන් දෑ අන්තර්ගතය ගොනුවට දමන්න

    # Set environment variables here so they are available globally to all apps
    # (and Terminal), including those launched via Spotlight.
    #
    # After editing this file run the following command from the terminal to update
    # environment variables globally without needing to reboot.
    # NOTE: You will still need to restart the relevant application (including
    # Terminal) to pick up the changes!
    # grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
    #
    # See http://www.digitaledgesw.com/node/31
    # and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
    #
    # Note that you must hardcode the paths below, don't use environment variables.
    # You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
    #
    setenv JAVA_VERSION 1.6
    setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
    setenv GROOVY_HOME /Applications/Dev/groovy
    setenv GRAILS_HOME /Applications/Dev/grails
    setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
    setenv JRUBY_HOME /Applications/Dev/jruby
    
    setenv ANT_HOME /Applications/Dev/apache-ant
    setenv ANT_OPTS -Xmx512M
    
    setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
    setenv M2_HOME /Applications/Dev/apache-maven
    
    setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
  4. Vi හි ඔබගේ වෙනස්කම් සුරකින්න සහ ඔබේ මැක් නැවත ආරම්භ කරන්න. නැතහොත් ඉහත කේත විවරණයේ දැක්වෙන grep/ xargsවිධානය භාවිතා කරන්න .

  5. ටර්මිනල් කවුළුවක් විවෘත කර ටයිප් කිරීමෙන් ඔබේ විචල්‍යයන් ක්‍රියාත්මක වන බව ඔප්පු කරන්න export, එවිට ඔබේ නව විචල්‍යයන් දැකිය යුතුය. මේවා ස්පොට්ලයිට් හරහා දියත් කරන IntelliJ IDEA සහ වෙනත් GUI යෙදුම් වලින් ද ලබා ගත හැකිය.


3
මම කියන්නේ පිළිගත් පිළිතුර (environment.plist) මට සාර්ථක වී නැති බවයි. මම යන්ත්‍ර හතරක් මත 10.5 සහ 10.6 මත දියත් කළ කොන්ක්‍රීට් ප්‍රවේශය සාර්ථකව භාවිතා කර ඇත්තෙමි.
මැතිව් මැකලෝ

55
මේ දේ ඕනෑම ක්රමයක් පවතින තොරව සිදුකිරීමට පද්ධතිය නැවත ආරම්භ ?
සෝරින්

40
ඉහත සඳහන් කළ සීමාව MacOS X 10.5 සඳහා අදාළ වේ. කෙසේ වෙතත්, මැකෝස් එක්ස් 10.6 හි මෙම සීමාව තවදුරටත් නොපවතින අතර පරිසරය තුළ අගයන් සැකසීම. එබැවින් තෝරාගත් පිළිතුර හිම දිවියා සඳහා නිවැරදි ය ;-)
ලුවී ජැකොමෙට්

5
සැකසීම launchd.confඑක් ක්‍රමයක් වන නමුත් නැවත ආරම්භ කිරීම අවශ්‍ය වේ (දියත් කිරීම නැවත ආරම්භ කිරීමට). ඔබට නැවත පණ ගැන්වීම වළක්වා ගැනීමට අවශ්‍ය නම්, මගේ පිළිතුර stackoverflow.com/questions/135688/…
මැට් කර්ටිස්

25
ඉදිරිපත් කළ දියත් කිරීමේ ප්‍රවේශය සමඟ ගැටලු කිහිපයක් තිබේ. බොහෝමයක් PATH පරිසර විචල්‍යයට විශේෂිත වේ, නමුත් අසන්නා PATH ගැන විශේෂයෙන් සඳහන් කළේය. 1) launchd.conf හි ඇති අයිතම පද්ධතියට ssh වැනි අන්තර්ක්‍රියාකාරී කවච වල යෙදෙන්නේ නැත. 2) "setenv PATH / testdir" රේඛාව තිබීම Terminal.app හි PATH ට එකතු වේ, නමුත් OS X යෙදුම් පරිසරයේ ඇති අනෙකුත් සියලුම PATH අයිතම විනාශ කරයි. 3) /etc/launchd.conf හි "setenv PATH {AT PATH}: / testdir" කිරීම දැනට පවතින $ PATH 4 නිසි ලෙස පුළුල් නොකරයි) launchd.conf එක් පරිශීලකයෙකු වෙනුවට සියලු පරිශීලකයින්ට අදාළ වේ. මට මීට වඩා හොඳ විසඳුමක් ඇති බව නොවේ.
NoahR

260

ස්පොට්ලයිට් විසින් ආරම්භ කරන ලද නව ක්‍රියාවලීන් සඳහා පරිසරය සකසන්නේ කෙසේද (නැවත ආරම්භ කිරීමකින් තොරව)

දියත් කිරීම (සහ, දිගුව අනුව, ස්පොට් ලයිට් වෙතින් ආරම්භ කළ ඕනෑම දෙයක්) භාවිතා කරන පරිසරය ඔබට සැකසිය හැකිය launchctl setenv. මාර්ගය සැකසීමට උදාහරණයක් ලෙස:

launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

නැතහොත් ඔබේ මාර්ගය .bashrcහෝ ඊට සමාන ආකාරයකින් සැකසීමට ඔබට අවශ්‍ය නම් , එය දියත් කිරීමේදී පිළිබිඹු කරන්න:

PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH

නැවත ආරම්භ කිරීමට අවශ්‍ය නැත ඔබ එය වෙනස්වී පරිසරය ගන්න අවශ්ය නම් යෙදුමක් නැවත ආරම්භ කිරීමට අවශ්ය වනු ඇත නමුත්.

Terminal.app යටතේ දැනටමත් ක්‍රියාත්මක වන ඕනෑම ෂෙල් වෙඩි මෙයට ඇතුළත් වේ, ඔබ එහි සිටී නම් ඔබට පරිසරය වඩාත් කෙලින්ම සැකසිය හැකිය, උදා. export PATH=/opt/local/bin:/opt/local/sbin:$PATH bash හෝ zsh සඳහා.

නැවත පණගැන්වීමෙන් පසු වෙනස්කම් තබා ගන්නේ කෙසේද

කිරීමට පද්ධතිය නැවත ආරම්භ පසු වෙනස්කම් තබා ඔබ පරිසරය විචල්යයන් සකසන්න පුළුවන් /etc/launchd.conf: ඒ නිසා මෙන්

setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

launchd.conf ඔබ නැවත ආරම්භ කරන විට ස්වයංක්‍රීයව ක්‍රියාත්මක වේ.

මෙම වෙනස්කම් දැන් බලාත්මක වීමට ඔබට අවශ්‍ය නම්, නැවත launchctl.confසැකසීමට ඔබ මෙම විධානය භාවිතා කළ යුතුය (ඉඟිය සඳහා ස්තූතියි kmklement!)

egrep -v '^\s*#' /etc/launchd.conf | launchctl

විධානය සමඟ launchctlඑය පටවන්නේ කෙසේද යන්න පිළිබඳව ඔබට වැඩි විස්තර දැනගත හැකිය .launchd.confman launchctl


2
හරිම ලස්සනයි! Environment.plist භාවිතා කිරීමේ වාසිය නම්, මුලින්ම ටර්මිනලයක් ගිනි තැබීමේ කරදරයකින් තොරව OS X එම ලිපිගොනු වල අන්තර්ගතයට ගෞරව කරන බවයි. කෙසේ වෙතත්, මම සිතන්නේ ඔබේ පිළිතුර ප්‍රධාන වශයෙන් අවධානය යොමු කර ඇත්තේ නැවත පණගැන්වීමේ අවශ්‍යතාවය මග හැරීම සඳහා වන අතර ඒ සඳහා ස්තූතියි.
fotNelton

2
apkapuzineralex ඔව් එය නැවත පණ ගැන්වීම වළක්වයි, එසේම එය ස්පොට්ලයිට් වෙතින් ආරම්භ කරන වැඩසටහන් සඳහා පරිසරය වෙනස් කරයි, එය environment.plistසිදු නොවේ.
මැට් කර්ටිස්

2
මේ ආකාරයෙන් පරිසරය සැකසීම මට වැඩ කළේ මා නැවත ආරම්භ කරන තුරු පමණි. මම මැක් නැවත පණගැන්වීමෙන් පසු පරිසර විචල්‍යය පැවතියේ නැත. මැතිව්ගේ පිළිතුර මට හොඳට වැඩ කළා.
ෂමාල් කරුණාරත්න

8
Ham ෂමාල්: මම ඔබේ අදහස + 1 ක් කළ නමුත් මතෙව්ගේ පිළිතුරට නැවත පණගැන්වීමක් අවශ්‍ය බව මතක තබා ගන්න , නමුත් නැවත පණගැන්වීමකින් තොරව එය වෙනස් කිරීමට නිවැරදි ක්‍රමය මම පෙන්වා දෙමි. ඔබට මේ දෙකම අවශ්‍ය නම්, මම ඔබට යෝජනා කරන්නේ ඔබේ මාර්ග සැකසුම් දියත් කිරීම.කොන්ෆ් තුළට දමන්න (එබැවින් ඒවා නැවත පණගැන්වීම් හරහා දිගටම පවතිනු ඇත), ඉන්පසු මෙම "source /etc/launchctl.conf; launchctl setenv PATH $ PATH" වැනි ස්ක්‍රිප්ට් එකක් භාවිතා කරන්න, එබැවින් ඔබට නැවත පණගැන්වීමට අවශ්‍ය නොවන විට "නැවුම්" කළ හැකිය.
මැට් කර්ටිස්

5
AttMattCurtis නැවත පණගැන්වීමක් අවශ්‍ය නොවන අතර, නැවත පණගැන්වීමෙන් පසුව වෙනස්කම් සැබවින්ම නැති වන බව පැහැදිලි කිරීම සඳහා කරුණාකර ඔබේ පිළිතුර කෙලින්ම සංස්කරණය කළ හැකිද ? එසේම, නැවත පණගැන්වීමට පෙර වෙනස්කම් යෙදිය හැකි නිවැරදි ක්‍රමය වනුයේ @ මැතිව්මකුලෝගේ පිළිතුරෙහි ප්‍රවේශය භාවිතා කිරීමයි : . etc/launchd.confegrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
mklement0

106

OS X v10.7 (සිංහයා) දක්වා සහ ඇතුළුව ඔබට ඒවා සැකසිය හැකිය:

~/.MacOSX/environment.plist

බලන්න:

පර්යන්තයේ PATH සඳහා, ඔබට සැකසීමට හැකි විය යුතුය .bash_profileහෝ .profile(ඔබට එය නිර්මාණය කිරීමට සිදුවනු ඇත)

සඳහා OS X මෙහෙයුම් පද්ධතිය v10.8 (කඳු ලයන්) හා ඉන් ඔබ්බට ඔබට භාවිතා කිරීමට අවශ්ය launchdහාlaunchctl .


4
මෙය සිදුවන්නේ ඒවා චිත්‍රක යෙදුම් විසින් භාවිතා කරනු ඇතැයි ඔබ සැබවින්ම අපේක්ෂා කරන්නේ නම් පමණි. මේවා සාමාන්‍යයෙන් පරිසර විචල්‍යයන් භාවිතා නොකරන බැවින් ඒවා සැකසීමට එතරම් හොඳ ස්ථානයක් නොවේ.
ක්‍රිස් හැන්සන්

18
පරිසර විචල්‍යයන් භාවිතා කරන චිත්‍රක යෙදුම් සඳහා ඉතා හොඳ උදාහරණ කිහිපයක් තිබේ. උදාහරණයක් ලෙස IntelliJ, Maven ජීවත් වන්නේ කොහේදැයි දැන ගැනීමට M2_HOME බැලීමට කැමතියි. විචල්‍යය බැලීමට එය ලබා ගැනීම සඳහා, ඔබ එය environment.plist වෙනුවට /etc/launchd.conf හි සැකසිය යුතුය.
මැතිව් මැකලෝ

3
යොමුව සඳහා: preferences.plistඕඑස් එක්ස් 10.5 සමඟ භාවිතා කිරීම පරමාදර්ශයට වඩා අඩු බැවින් එකල preferences.plistඅවධානය යොමු කිරීම තුළින් දියත් කරන ලද යෙදුම් සඳහා කියවා නොතිබුණි, ලුවී විසින් මැතිව්ගේ පිළිතුරට අදහස් දැක්වීම සහ විද්‍යුත් තැපෑල බලන්න. ඊමේල්. ඊ.එස්.එම්.එස්.යූ. /002113.html . OS X 10.6 සඳහා environment.plistඑය ක්‍රියාත්මක විය යුතුය.
ජේනස්

16
මෙය තවදුරටත් OSX 10.8 apple.stackexchange.com/questions/57385/… සඳහා
thatsmydoing

1
imtim_yates ඔබේ පිළිතුරේ පළමු පේළිය "ඉහළට සහ ඇතුළුව සිංහයා (10. * 7 *)" කියවීමට සංස්කරණය කළ හැකිද ? මම එම සංස්කරණය මුල්, නොපැහැදිලි "කඳුකර සිංහයා" වෙත ගෙන ඒමට උත්සාහ කළ අතර විචාරකයින් එය ප්‍රතික්ෂේප කළහ.
mklement0

68

එක් ප්‍රභවයකින් විධාන රේඛාව සහ GUI යෙදුම් සඳහා විසඳුම ( මැක් ඕඑස් එක්ස් වී 10.10 (යොස්මයිට්) සහ මැක් ඕඑස් එක්ස් වී 10.11 (එල් කැපිටන් ) සමඟ ක්‍රියා කරයි)

~/.bash_profileපහත දැක්වෙන ස්නිපටයේ ඔබට සමාන පරිසර විචල්‍ය අර්ථ දැක්වීම් ඇති බව උපකල්පනය කරමු :

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin"
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

අපට දියත් කිරීමේ නියෝජිතයෙක් අවශ්‍යයි එය එක් එක් පිවිසුම් මත ක්‍රියාත්මක වන අතර ඕනෑම වේලාවක ඉල්ලුමට අනුව මෙම විචල්‍යයන් පරිශීලක සැසියට පටවනු ඇත. මෙම නිර්වචන විග්‍රහ කිරීමට සහ නියෝජිතයා විසින් ක්‍රියාත්මක කිරීමට අවශ්‍ය විධානයන් තැනීමට අපට ෂෙල් ස්ක්‍රිප්ට් අවශ්‍ය වේ.

පහත සඳහන් අන්තර්ගතයන් සමඟ නාමාවලියෙහි plistඋපසර්ගය සහිත (උදා: නම් osx-env-sync.plist) ගොනුවක් සාදන්න ~/Library/LaunchAgents/:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>osx-env-sync</string>
  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-l</string>
    <string>-c</string>
    <string>
      $HOME/.osx-env-sync.sh
    </string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

-lපරාමිතිය මෙහි තීරණාත්මක ය; එය සමග ෂෙල් තිර රචනය ක්රියාත්මක කිරීම සඳහා අවශ්ය වේ පිවිසුම් ෂෙල් එසේ~/.bash_profile මෙම විධානාවලිය ක්රියාත්මක කිරීමට පෙර පළමු ස්ථානයේ මූලාශ්ර වේ.

දැන්, ෂෙල් පිටපත. ~/.osx-env-sync.shපහත සඳහන් අන්තර්ගතයන් සමඟ එය සාදන්න :

grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
  launchctl setenv ${envvar} ${!envvar}
done

ෂෙල් ස්ක්‍රිප්ට් ක්‍රියාත්මක කළ හැකි බවට වග බලා ගන්න:

chmod +x ~/.osx-env-sync.sh

දැන්, වත්මන් සැසිය සඳහා දියත් කිරීමේ නියෝජිතයා පටවන්න:

launchctl load ~/Library/LaunchAgents/osx-env-sync.plist

(නැවත) GUI යෙදුමක් දියත් කර එයට පරිසර විචල්‍යයන් කියවිය හැකි බව තහවුරු කරන්න.

සැකසුම අඛණ්ඩව පවතී. එය නැවත ආරම්භ කිරීම සහ නැවත සකස් කිරීම නොනැසී පවතිනු ඇත.

ආරම්භක සැකසුමෙන් පසු (ඔබ දැන් කළ පරිදි), ~/.bash_profileඔබේ මුළු පරිසරයේම යම් වෙනසක් නැවත පිළිබිඹු කිරීමට ඔබට අවශ්‍ය නම් , launchctl load ...විධානය නැවත ක්‍රියාත්මක කිරීමෙන් ඔබට අවශ්‍ය දේ සිදු නොවේ. ඒ වෙනුවට ඔබට පහත සඳහන් පරිදි අනතුරු ඇඟවීමක් ලැබෙනු ඇත:

<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress

ලොග්අවුට් / පිවිසුම් ක්‍රියාවලිය හරහා නොගොස් ඔබේ පරිසර විචල්‍යයන් නැවත පූරණය කිරීම සඳහා පහත සඳහන් දේ කරන්න:

launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist

අවසාන වශයෙන් ඔබ දැනටමත් ක්‍රියාත්මක වන යෙදුම් (Terminal.app ඇතුළුව) නැවත ආරම්භ කිරීමට වග බලා ගන්න.

මම මෙහි කේතය සහ පැහැදිලි කිරීම් GitHub ව්‍යාපෘතියකට තල්ලු කර ඇත: osx-env-sync .

අවම වශයෙන් OS X (යොස්මයිට් සහ එල් කැපිටන්) හි නවතම සංස්කරණ සඳහා මෙය අවසාන විසඳුම වනු ඇතැයි මම බලාපොරොත්තු වෙමි.


හොඳින් වැඩ කරයි. මෙය ආරක්ෂිත බවට පත්වුවහොත් එය ආරක්ෂක වළල්ලක් වේ දැයි තරමක් කනස්සල්ලට පත්ව සිටී
වොරන් පී

4
මට නිසි ලෙස වැඩ කිරීමට හැකි එකම විසඳුම මෙම විසඳුමයි. විශිෂ්ට විසඳුම්. මැක් මත මෙය එතරම් අපහසු විය යුත්තේ මන්දැයි මට තේරුම් ගත නොහැක ...
ජොනීටෙක්ස්

2
අවාසනාවකට මෙන් මෙය එල් කැපිටන් හි ක්‍රියාත්මක නොවේ. Github.com/ersiner/osx-env-sync/issues/1#issuecomment-169803508 වෙතින් ඔබගේ අදහස ගැටළුව හොඳින් පැහැදිලි කරයි.
mgol

1
ඉතින්, මෙම විසඳුම ක්‍රියා නොකරයි, /etc/launchd.conf කිසිදු බලපෑමක් නැත, Node.js එහි ද්විමය / usr / local / bin වෙත ස්ථාපනය කරන අතර මෙම මාර්ගය GUI යෙදුම් සඳහා PATH හි නොමැත. එබැවින්, නෝඩ් භාවිතා කරන Git කොකු එල් කැපිටන් හි SourceTree වැනි GUI Git යෙදුම්වල ක්‍රියා නොකරයි. මෙය භයානක ය.
mgol

1
ගැටළුව PATH විචල්‍යය ගැන පමණි. මම බලාපොරොත්තු වෙනවා අපට ඉක්මනින් විසඳුමක් සොයා ගත හැකිය.
අර්සින් අර්

56
  1. කරන්න:

    vim ~/.bash_profile

    ගොනුව නොපවතිනු ඇත (එසේ නොවේ නම්, ඔබට එය නිර්මාණය කළ හැකිය).

  2. මෙය ටයිප් කර ගොනුව සුරකින්න:

    export PATH=$PATH:YOUR_PATH_HERE
  3. දුවන්න

    source ~/.bash_profile

+1 exportයනු මා යෝජනා කිරීමට යන්නේ, BASH සහාය නොදක්වන හෙයින්setenv
vol7ron

දැනට ක්‍රියාත්මක වේ. මේ හැම දෙයක්ම මම හිතුවට වඩා ගොඩක් සංකීර්ණයි වගේ. මේ සියල්ල සඳහා පසුව තවත් කාලයක් කැප කිරීමට සිදුවනු ඇත. ස්තූතියි.
කකා රූටෝ

35

OS X හි පරිසර විචල්‍යයන් සමඟ කටයුතු කිරීමේදී අත්‍යවශ්‍යයෙන්ම ගැටලු දෙකක් තිබේ. පළමුවැන්න නම් ස්පොට්ලයිට් වෙතින් වැඩසටහන් (මැක් මෙනුවේ / තත්ව තීරුවේ දකුණු පැත්තේ ඇති විශාලන වීදුරු නිරූපකය) සහ දෙවනුව ඩොක් වෙතින් වැඩසටහන් ක්‍රියාත්මක කිරීමේදී. . එය සම්මත ෂෙල් ස්ථානවල සිට පරිසරය කියවන නිසා පර්යන්තය ඉල්ලුම්පත්රය / උපයෝගිතා වැඩසටහන් කැඳවමින් නොවැදගත් ( ~/.profile, ~/.bash_profile,~/.bashrc , ආදිය)

තටාකයෙන් වැඩසටහන් ක්‍රියාත්මක ~/.MacOSX/environment.plist කිරීමේදී, <dict>මූලද්‍රව්‍යයේ අනුක්‍රමයක් ඇති තැන භාවිතා කරන්න<key>KEY</key><string>theValue</string> .

ස්පොට්ලයිට් වෙතින් වැඩසටහන් ක්‍රියාත්මක කිරීමේදී, ඔබට අවශ්‍ය සියලුම යතුරු / අගය සැකසුම් සමඟ දියත් කිරීම සකසා ඇති බවට සහතික වන්න.

මෙම ගැටලු දෙකම එකවර විසඳීම සඳහා, මම මගේ පරිශීලක ගිණුමේ පිවිසුම් අයිතමයක් (පද්ධති මනාප මෙවලම හරහා සකසා ඇත) භාවිතා කරමි. පුරනය වීමේ අයිතමය ඊමාක්ස් ලිස්ප් ශ්‍රිතයක් ඉල්ලා සිටින බාෂ් ස්ක්‍රිප්ටයක් වන අතර ඇත්ත වශයෙන්ම එකම දේ ඉටු කිරීම සඳහා යමෙකුට ඔවුන්ගේ ප්‍රියතම ස්ක්‍රිප්ටින් මෙවලම භාවිතා කළ හැකිය. මෙම ප්‍රවේශය මඟින් එය ඕනෑම වේලාවක ක්‍රියාත්මක වන අතර නැවත පණගැන්වීමක් අවශ්‍ය නොවන අමතර ප්‍රතිලාභයක් ඇත, එනම් යමෙකුට සංස්කරණය කළ හැකිය ~/.profile, පිවිසුම් අයිතමය යම් කවචයකින් ධාවනය කළ හැකි අතර ඩොක් හෝ ස්පොට් ලයිට් වෙතින් අලුතින් ආයාචිත වැඩසටහන් සඳහා වෙනස්කම් දැකිය හැකිය.

විස්තර:

පිවිසුම් අයිතමය: ~/bin/macosx-startup

#!/bin/bash
bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"

Emacs lisp function: ~/lib/emacs/elisp/macosx/envionment-support.el

;;; Provide support for the environment on Mac OS X

(defun generate-environment ()
  "Dump the current environment into the ~/.MacOSX/environment.plist file."
  ;; The system environment is found in the global variable:
  ;; 'initial-environment' as a list of "KEY=VALUE" pairs.
  (let ((list initial-environment)
        pair start command key value)
    ;; clear out the current environment settings
    (find-file "~/.MacOSX/environment.plist")
    (goto-char (point-min))
    (setq start (search-forward "<dict>\n"))
    (search-forward "</dict>")
    (beginning-of-line)
    (delete-region start (point))
    (while list
      (setq pair (split-string (car list) "=")
            list (cdr list))
      (setq key (nth 0 pair)
            value (nth 1 pair))
      (insert "  <key>" key "</key>\n")
      (insert "  <string>" value "</string>\n")

      ;; Enable this variable in launchd
      (setq command (format "launchctl setenv %s \"%s\"" key value))
      (shell-command command))
    ;; Save the buffer.
    (save-buffer)))

සටහන: මෙම විසඳුම මා එකතු කිරීමට පෙර එන අයගේ එකතුවකි, විශේෂයෙන් මැට් කර්ටිස් විසින් ඉදිරිපත් කරන ලද නමුත් මම හිතාමතාම මගේ ~/.bash_profileඅන්තර්ගත වේදිකාව ස්වාධීනව තබා ගැනීමට සහ launchdපරිසරය සැකසීම (මැක් පමණක් පහසුකම) වෙනම පිටපතකට දැමීමට උත්සාහ කර ඇත්තෙමි. .


21
වොව්. මෙය ක්‍රියාත්මක නොවනු ඇතැයි මම නොකියමි, නමුත් ... OS X හි ස්ථාවර පරිසරයක් ලබා ගැනීම සඳහා අවශ්‍ය වන සංකීර්ණතාව ගැන මම තැති
ගතිමි

2
10.9 සඳහා මා දුටු සියලු විසඳුම් වලින් මෙය හොඳම දේ වේ. එකම අඩුපාඩුව නම්, පිවිසුම් අයිතම අවිනිශ්චිත අනුපිළිවෙලකට ක්‍රියාත්මක වන හෙයින්, ඉමාක්ස් (නිදසුනක් ලෙස) පිවිසුම් අවස්ථාවේදී දියත් කළහොත් (එය ලොග්අවුට් හි විවෘතව තිබූ නිසා, උදාහරණයක් ලෙස), ඔබ එය නැවත ආරම්භ නොකරන්නේ නම් එයට අනිවාර්යයෙන්ම පරිසර විචල්‍යයන් නොමැත. , එය ඔබගේ ස්ක්‍රිප්ටයට පෙර දියත් කළ බැවිනි.
telotortium

22

තවත්, නිදහස්, විවෘත මූලාශ්‍රයක් වන මැක් ඕඑස් එක්ස් වී 10.8 (මවුන්ටන් ලයන්) මනාප කවුළුව / පරිසරය. ලැයිස්තු විසඳුම එන්ව්පේන් ය .

EnvPane හි ප්‍රභව කේතය GitHub වෙතින් ලබා ගත හැකිය . එන්වීපේන් RCE පරිසරයට සාපේක්ෂව විශේෂාංග ඇති බව පෙනේ , කෙසේ වෙතත්, එහි ගබඩා කළ විචල්‍යයන් ක්ෂණිකව යාවත්කාලීන කළ හැකි බව පෙනේ, එනම් නොමැතිව සාදරයෙන් වන කටයුතු නැවත ආරම්භ හෝ පිවිසුම්, අවශ්යතාව.

සංවර්ධකයා ප්‍රකාශ කළ පරිදි:

EnvPane යනු මැක් ඕඑස් එක්ස් 10.8 (මවුන්ටන් ලයන්) සඳහා මනාප කවුළුවකි, එමඟින් චිත්‍රක සහ පර්යන්ත සැසි දෙකෙහිම සියලුම වැඩසටහන් සඳහා පරිසර විචල්‍යයන් සැකසීමට ඔබට ඉඩ සලසයි. මවුන්ටන් ලයන් හි ~ / .MACOSX / environment.plist සඳහා සහය යථා තත්වයට පත් කිරීම පමණක් නොව, පිටතට ගොස් නැවත ඇතුළුවීමේ අවශ්‍යතාවයකින් තොරව එය වහාම පරිසරයට ඔබගේ වෙනස්කම් ප්‍රකාශයට පත් කරයි. <SNIP> එන්ව්පේන් ( දියත් කළ නියෝජිතයා 1) පිවිසීමෙන් පසු සහ 2) ~ / .MacOSX / environment.plist වෙනස් වන සෑම අවස්ථාවකම. නියෝජිතයා ~ / .MacOSX / environment.plist කියවා එම ගොනුවේ සිට වර්තමාන පරිශීලකයාගේ දියත් කළ උදාහරණයට පාරිසරික විචල්‍යයන් අපනයනය කරන්නේ එකම API හරහා දියත් කිරීම setenv සහ launchctl unsetenv භාවිතා කරයි.

වියාචනය: මම කිසිසේත් සංවර්ධකයාට හෝ ඔහුගේ / ඇයගේ ව්‍යාපෘතියට සම්බන්ධ නැත.

PS මම නමට කැමතියි (ශබ්දය 'අවසන් වේදනාව' වගේ).


2
එන්ව්පේන් හට මේ මොහොතේ PATH සැකසිය නොහැක. වැඩි විස්තර සඳහා මගේ දෝෂ වාර්තාව බලන්න: github.com/hschmidt/EnvPane/issues/5
ගුන්තර්

මම thing ️ මේ කාරණය .. අඩුපාඩුවක් පමණයි .. ඕනෑම විසඳුමක ගොදුරක් වනු ඇතැයි මම සිතමි .. එනම් - ක්‍රියාවලියක් නැවත ආරම්භ කිරීම - නව "පරිසරය" උරුම කර ගැනීමයි. වොන්ක් වින්ක්.
ඇලෙක්ස් ග්‍රේ

2
orsorin: ඔබ අත්විඳින ගැටලුව පිළිබඳ විස්තරයක් සමඟ GitHub වෙබ් අඩවියේ ගැටලුවක් විවෘත කළ හැකිද? එන්ව්පේන් 10.10 මට වැඩ කරයි. වියාචනය: මම එන්ව්පේන් හි කතුවරයා වෙමි.
හැනස්

18

මවුන්ටන් ලයන් හි සියලුම /etc/pathsසහ /etc/launchd.confසංස්කරණය කිරීමෙන් කිසිදු බලපෑමක් සිදු නොවේ!

ඇපල් හි සංවර්ධක සංසද පවසන්නේ:

"ඔබට අවශ්‍ය පාරිසරික විචල්‍යයන් සමඟ" LSEn Environment "ශබ්ද කෝෂයක් අඩංගු කිරීම සඳහා .app හි Info.plist වෙනස් කරන්න.

~ / .MacOSX / environment.plist තවදුරටත් සහාය නොදක්වයි. "

එබැවින් මම යෙදුමේ කෙලින්ම සංස්කරණය කළෙමි Info.plist("AppName.app" මත දකුණු ක්ලික් කරන්න (මේ අවස්ථාවේ SourceTree) ඉන්පසු " Show package contents").

පැකේජ අන්තර්ගතය පෙන්වන්න

මම නව යතුරක් / අක්ෂර යුගලයක් එක් කළෙමි:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(බලන්න: ඇපල් හි දියත් කිරීමේ සේවා ලේඛනය )

රූප විස්තරය මෙහි ඇතුළත් කරන්න

දැන් යෙදුම (මගේ නඩුවේදී Sourcetree) දී ඇති මාර්ගය භාවිතා කරන අතර Git 1.9.3 :-) සමඟ ක්‍රියා කරයි

PS: ඇත්ත වශයෙන්ම ඔබ ඔබේ නිශ්චිත මාර්ග අවශ්‍යතා සඳහා මාර්ග ප්‍රවේශය සකස් කළ යුතුය.


3
මෙම විසඳුම පද්ධතියට අවම වශයෙන් ආක්‍රමණය කිරීමේ ප්‍රමිතිය සපුරාලයි. ස්තූතියි.
ජෝන් වැන්ස්

@ ජෝන් වැන්ස් +1 සම්පුර්ණයෙන්ම එකඟ වන්න, ජේසන් ටී. මිලර් සිය පිළිතුරෙහි පැහැදිලිව පැහැදිලි කරන පරිදි
පද්ධතිමය

5
එල් කැපිටන්හි එය මට කිසිදු බලපෑමක් නැත. :(
mgol

හයි සියෙරා 10.13 හි, මම යෙදුමේ Info.plistගොනුව වෙනස් කළහොත් යෙදුම පූරණය කිරීමට අසමත් වේ:LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
කුන්ජ්බායි

17

යාවත්කාලීන කිරීම (2017-08-04)

(අවම වශයෙන්) macOS 10.12.6 (සියෙරා) අනුව, මෙම ක්‍රමය Apache httpd සඳහා වැඩ කිරීම නවතා දමා ඇති බව පෙනේ ( systemසහ userවිකල්ප දෙකම සඳහා launchctl config). වෙනත් වැඩසටහන් වලට බලපෑමක් ඇති බවක් නොපෙනේ. මෙය httpd හි දෝෂයක් යැයි සිතිය හැකිය.

මුල් පිළිතුර

මෙය OS X 10.10+ ට අදාළ වේ (10.11+ විශේෂයෙන් /usr/binලිවිය නොහැකි මූල රහිත මාදිලිය නිසා ).

OS X හි ඇති දෝෂයක් හේතුවෙන් විචල්‍යය launchctl setenv PATH <new path>සැකසීමට භාවිතා නොකරන බව මම ස්ථාන කිහිපයක කියවා ඇත්තෙමි PATH(එය පුද්ගලික අත්දැකීම් වලින් සත්‍ය බව පෙනේ). කවචයෙන් දියත් නොකරන ලද යෙදුම්PATH සඳහා සැකසිය හැකි වෙනත් ක්‍රමයක් ඇති බව මට පෙනී ගියේය :

sudo launchctl config user path <new path>

මෙම විකල්පය දියත් කිරීමේ මිනිසා පිටුවේ ලේඛනගත කර ඇත:

වින්‍යාස පද්ධතිය | පරිශීලක පරාමිති අගය

දියත් කළ (8) වසම් සඳහා නිරන්තර වින්‍යාස තොරතුරු සකසයි. වින්‍යාසගත කළ හැක්කේ පද්ධති වසම සහ පරිශීලක වසම් පමණි. අඛණ්ඩ ගබඩාවේ පිහිටීම ක්‍රියාත්මක කිරීමේ විස්තරයක් වන අතර, එම ගබඩාවේ වෙනස්කම් සිදු කළ යුත්තේ මෙම උප කමාන්ඩ් හරහා පමණි. මෙම උප කමාන්ඩ් හරහා සිදුකරන ලද වෙනස්කම් බලාත්මක කිරීම සඳහා නැවත පණගැන්වීමක් අවශ්‍ය වේ.

[...]

මාර්ගය

ඉලක්කගත වසම තුළ ඇති සියලුම සේවාවන් සඳහා PATH පරිසර විචල්‍යය නූල් අගයට සකසයි. නූල් අගය පරිසරයේ (7) PATH පරිසර විචල්‍යය සඳහා දක්වා ඇති ආකෘතියට අනුකූල විය යුතුය. සේවාවක් තමන්ගේම PATH නියම කරන්නේ නම්, සේවා විශේෂිත පරිසර විචල්‍යයට ප්‍රමුඛස්ථානයක් ගන්නා බව සලකන්න.

සටහන: වසම තුළ ඇති සියලුම සේවාවන් සඳහා සාමාන්‍ය පරිසර විචල්‍යයන් සැකසීමට මෙම පහසුකම භාවිතා කළ නොහැක. එය හිතාමතාම PATH පරිසරයට විචලනය කළ හැකි අතර ආරක්ෂක හේතූන් මත වෙන කිසිවක් නැත.

Finder වෙතින් ආරම්භ කරන ලද GUI යෙදුමක් සමඟ වැඩ කිරීමට මම මෙය තහවුරු කර ඇත්තෙමි (එය getenvPATH ලබා ගැනීමට භාවිතා කරයි ). ඔබ මෙය කළ යුත්තේ එක් වරක් පමණක් බවත් නැවත පණගැන්වීම් හරහා වෙනස දිගටම සිදුවන බවත් සලකන්න.


එය මටත් වැඩ කරයි. sudo launchctl procinfo <gui-pid>අලුතින් සැකසූ PATHපරිසරය පෙන්වයි . නමුත් sudo launchctl config user path <new path>සැබවින්ම සියලු පරිශීලකයින් සඳහා සකසා ඇත ... (නව පරිශීලකයෙකු එකතු කිරීමෙන් සහ
සබ්ලයිම්

1
පුරනය වීමේදී නැවත විවෘත කරන ලද (වසා දැමීමේදී විවෘතව පැවති) යෙදුම්වල PATH පරිසර විචල්‍යයට මෙය බලපෑමක් ඇති කරන බවක් නොපෙනේ.
බ්‍රෙෂ්ට් මැකියල්ස්

සිත්ගන්නා සුළුය. එයින් අදහස් වන්නේ පරිසරය නැවත විවෘත කරන යෙදුම් සඳහා (හෝ එහි උප කුලකයක්) සුරකින බවයි.
මැක්ස් ලෙස්කේ

AxMaxLeske නැත, පරිසර විචල්‍යය වෙනස් කිරීමට පෙර නැවත විවෘත කරන ලද යෙදුම් ආරම්භ වේ. ඉතින්, මෙය සිදු වූ පළමු අවස්ථාව පමණක් නොවේ sudo launchctl config user path, මෙය සිදු වේ (ඔබ උපකල්පනය කරන බව පෙනෙන?).
බ්‍රෙෂ්ට් මැකියල්ස්

1
@ShlomiSchwartz launchctlකරන්නේ නැහැ ඔබ අත්තනෝමතික පරිසරය විචල්යයන් සකසන්න කර ගැනීමට ඉඩ ලබා දේ. මෙම PATHවිචල්ය ව්යතිරේකයක් ඇත.
මැක්ස් ලෙස්කේ

16

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

මගේ අත්දැකීම් අනුව, සියලු ක්‍රියාදාමයන් සඳහා PATH වැනි පරිසර විචල්‍යයන් සඳහා වන ගෝලීය වෙනස්කම් වින්ඩෝස් වලට වඩා OS X හි ඇති දේවල් බිඳ දැමීමට වඩා වැඩි ය. හේතුව, බොහෝ OS X යෙදුම් සහ වෙනත් මෘදුකාංග (සමහර විට, විශේෂයෙන්ම මෙහෙයුම් පද්ධතියේ අංග ඇතුළුව) යුනික්ස් විධාන රේඛා මෙවලම් මත රඳා පවතින අතර පද්ධතිය සමඟ සපයා ඇති මෙම මෙවලම්වල අනුවාදවල හැසිරීම උපකල්පනය කරයි. එසේ කිරීමේදී නිරපේක්ෂ මාර්ග භාවිතා නොකරන්න (ගතිකව පටවන ලද පුස්තකාල සහ DYLD_ * පරිසර විචල්‍යයන්ට සමාන අදහස් අදාළ වේ). උදාහරණයක් ලෙස, පයිතන් සහ රූබි වැනි පරිවර්තකයන්ගේ OS X විසින් සපයන ලද අනුවාදයන් ප්‍රතිස්ථාපනය කිරීම පිළිබඳ විවිධ ස්ටැක් පිටාර ගැලීම් ප්‍රශ්න සඳහා ඉහළම ශ්‍රේණිගත කළ පිළිතුරු සාමාන්‍යයෙන් "මෙය නොකරන්න" යනුවෙන් සලකන්න.

OS X ඇත්ත වශයෙන්ම මේ සම්බන්ධයෙන් වෙනත් යුනික්ස් වැනි මෙහෙයුම් පද්ධති වලට වඩා වෙනස් නොවේ (උදා: ලිනක්ස්, ෆ්‍රීබීඑස්ඩී සහ සොලාරිස්); ඇපල් විසින් මෙය කිරීමට පහසු ක්‍රමයක් ලබා නොදීමට බොහෝ දුරට හේතුව එය දේවල් බිඳ දැමීමයි . වින්ඩෝස් මෙම ගැටළු වලට ගොදුරු නොවන තරමට, එය කාරණා දෙකක් නිසා ය: (1) වින්ඩෝස් මෘදුකාංග යුනික්ස් මෘදුකාංගය කරන තාක් දුරට විධාන රේඛා මෙවලම් මත විශ්වාසය තැබීමට නැඹුරු නොවේ, සහ (2) මයික්‍රොසොෆ්ට් සතුව ඇත PATH වැනි "ගෝලීය" වින්‍යාස විකල්පයන්ගේ බලපෑම සීමා කිරීම සඳහා නව වින්ඩෝස් අනුවාද වල ගතික පැටවීමේ හැසිරීම වෙනස් කර ඇති සියලුම ක්‍රියාදාමයන්ට බලපාන වෙනස්කම් නිසා ඇති වූ "ඩීඑල්එල් නිරය" සහ ආරක්ෂක ගැටළු යන දෙකෙහිම එවැනි පුළුල් ඉතිහාසයක් ඇත.

"කොර" හෝ නැත, ඔබ එවැනි වෙනස්කම් කුඩා විෂය පථයන්ට සීමා කළහොත් ඔබට වඩා ස්ථායී පද්ධතියක් ඇත.


1
ඔවුන් ඉල්ලා සිටි දෙය නොකරන්නැයි මිනිසුන්ට පැවසීම ඔවුන් ඇසූ ප්‍රශ්නයට පිළිතුරක් නොවේ. මිනිසුන් මෙය කිරීමෙන් වලක්වා ගැනීමද දේවල් බිඳ දැමීමකි. ඇපල් හි මොඩියුස් ඔපෙරන්ඩි.
frabjous

LSEn Environment යතුරු සංවර්ධකයා සමඟ PATH /Applications/App.app/Contents/Info.plist හි සැකසීම දැනට නිර්දේශිත විසඳුම විය හැකිය.
ඩේව් එක්ස්

15

සමහර විට පෙර පිළිතුරු සියල්ලම ක්‍රියා නොකරයි. ඔබට M2_HOMEසූර්යග්‍රහණයේ හෝ ඉන්ටෙලිජ් අයිඩීඒ හි පද්ධති විචල්‍යයකට (වැනි ) ප්‍රවේශ වීමට අවශ්‍ය නම් මෙම නඩුවේ මට වැඩ කරන එකම දෙය නම්:

පළමුව (පියවර 1) /etc/launchd.confමෙවැනි පේළියක් අඩංගු කිරීමට සංස්කරණය කරන්න : "setenv VAR අගය" සහ පසුව (පියවර 2) නැවත ආරම්භ කරන්න.

.Bash_profile සරලව වෙනස් කිරීම OS X හි යෙදුම් වෙනත් යුනික්ස් හි මෙන් ආරම්භ නොවන නිසා ක්‍රියා නොකරයි; ඔවුන්ට දෙමව්පියන්ගේ ෂෙල් විචල්‍යයන් උරුම නොවේ. මා නොදන්නා හේතුවක් නිසා අනෙක් සියලුම වෙනස් කිරීම් ක්‍රියා නොකරනු ඇත. සමහර විට වෙනත් කෙනෙකුට මේ ගැන පැහැදිලි කර ගත හැකිය.


5
අයදුම්පත් ස්පොට්ලයිට් වෙතින් හෝ වෙනත් ආකාරයකින් ආරම්භ කර ඇති අතර ඔවුන්ගේ මව් ක්‍රියාවලිය මඟින් /etc/launchd.conf කියවා ඇති අතර එමඟින් සියලු යෙදුම් සහ කවච වල දෘශ්‍ය විචල්‍යයන් සැකසිය යුතු ස්ථානය පිළිබඳ සිත්ගන්නා තේරීමක් කරයි.
මැතිව් මැකලෝ

1
නැවත ආරම්භ කිරීම වළක්වන
මැට් කර්ටිස්

මගේ MaxOS 10.6 යන්ත්‍රයේ /etc/launchd.conf ගොනුව නොමැත. මෙම අනුවාදය අනුව මෙය අළුත් හෝ යල්පැනගිය දෙයක්ද? නැත්නම් මෙම යන්ත්‍රය අවුල් වී තිබේද?
පීටර්ක්

13

පාරිසරික විචල්‍යතා මනාප කවුළුව පසුපස හඹා ගොස් සබැඳිය කැඩී ඇති බව දැනගත් පසු ඇපල් වෙබ් අඩවියේ සෙවීමකින් ඔවුන් ඒ ගැන අමතක වී ඇති බවක් පෙනේ ... මම නැවත දියත් කිරීමේ ක්‍රියාවලියේ මාවතට පිවිසුනෙමි.

මගේ පද්ධතියේ (මැක් ඕඑස් එක්ස් 10.6.8) පරිසරය තුළ අර්ථ දක්වා ඇති විචල්‍යයන් ස්පොට්ලයිට් වෙතින් දියත් කරන ලද යෙදුම් වෙත විශ්වසනීයව අපනයනය කරන බව පෙනේ (දියත් කිරීම හරහා). මගේ කරදරය නම්, එම වර්‍ගයන් පර්යන්තයේ නව බාෂ් සැසි වෙත අපනයනය නොකිරීමයි. මෙහි නිරූපණය කර ඇති පරිදි මට ප්‍රතිවිරුද්ධ ගැටළුව තිබේ.

සටහන: environment.plist කලින් විස්තර කර ඇති පරිදි XM නොව JSON ලෙස පෙනේ

Sp / MacOSX / environment.plist සහ සංස්කරණය කිරීමෙන් මට වර්‍ග බැලීමට ස්පොට්ලයිට් යෙදුම් ලබා ගැනීමට හැකි විය මම මගේ .profile ගොනුවට පහත එකතු කිරීම මඟින් නව පර්යන්තය සැසිය පටන් ගෙන එම vars බල ගැනීමට හැකි විය:

eval $(launchctl export)


දියත් කිරීමේ අපනයනය පිළිබඳ හොඳ තොරතුරක්. නමුත් මම එය .ප්‍රොෆයිල් තුළට දමන්නේ නැහැ. එය ඔබගේ / PATH / usr / local / bin ඇතුළත් නොවන එකක් සමඟ නැවත ලියයි. නමුත් ඔබට උනන්දුවක් දක්වන වර්‍ග තෝරා ගැනීමට ඔබට රීජෙක්ස් භාවිතා කළ හැකිය: `` eval $ (launchctl export | grep '^ my. * =').
mivk

3
මගේ නව මවුන්ටන් ලයන් යන්ත්‍රයේ (10.8.2) environment.plist සම්පූර්ණයෙන්ම නිෂ් .ල ය. නිවැරදි මාර්ගය සඳහා මතෙව්ගේ පිළිතුර බලන්න. මේ සියල්ලම දියත් කර ඇති අතර /etc/launchd.conf සමඟ දියත් කිරීමේ විධාන රේඛා යෙදුමයි. ඔබ සමඟ ඔබ දක්වා කියවන්න පුළුවන් man launchd, man launchctlසහ man launchd.confපර්යන්ත දිස්වේ. මැක් සංවර්ධක පුස්තකාලය මඳක් ප්‍රමාද වුවද ග්ලැඩ් ඇපල් මෑන් පිටු යාවත්කාලීනව තබා ගනී.
රසල් බී

10

මෙම බෑෂ් ආරම්භක ගොනු ඕනෑම - ~/.bashrc, ~/.bash_profile, ~/.profile. ~/.MacOSX/environment.plistGUI යෙදුම්වල පරිසර විචල්‍යයන් සඳහා නම් කර ඇති යම් ආකාරයක අමුතු ගොනුවක් ද ඇත.


10

මැට් කර්ටිස් දුන් පිළිතුරට සමානව, මම පාරිසරික විචල්‍යයන් දියත් කිරීම හරහා සකසා ගත්තෙමි, නමුත් මම එය අපනයනය නමින් ශ්‍රිතයක් තුළට ඔතා, එමඟින් මගේ .bash_profile හි සාමාන්‍ය වැනි විචල්‍යයක් අපනයනය කරන සෑම විටම එය දියත් කිරීම මඟින් ද සකසා ඇත. මෙන්න මම කරන දේ:

  1. මගේ .bash_profile තනිකරම එක් පේළියකින් සමන්විත වේ, (මෙය පුද්ගලික මනාපය පමණි.)

    source .bashrc
  2. මගේ .bashrc සතුව මෙය තිබේ:

    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        fi
    }
    
    export -f export
  3. ඉහත දැක්වෙන්නේ බාෂ් බිල්ඩින් “අපනයනය” අධික ලෙස පටවන අතර සාමාන්‍යයෙන් සියල්ල අපනයනය කරනු ඇත (මම එය සමඟ “අපනයනය” අපනයනය කරන බව ඔබට පෙනෙනු ඇත!), ඉන්පසු ඒවා OS X යෙදුම් පරිසරයන් සඳහා දියත් කිරීම හරහා නිසි ලෙස සකසන්න, ඔබ පහත සඳහන් කිසිවක් භාවිතා කළත්:

    export LC_CTYPE=en_US.UTF-8
    # ~$ launchctl getenv LC_CTYPE
    # en_US.UTF-8
    PATH="/usr/local/bin:${PATH}"
    PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}"
    export PATH
    # ~$ launchctl getenv PATH
    # /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
    export CXX_FLAGS="-mmacosx-version-min=10.9"
    # ~$ launchctl getenv CXX_FLAGS
    # -mmacosx-version-min=10.9
  4. මේ ආකාරයෙන් මට සෑම විචල්‍යයක්ම දියත් කිරීමට සෑම විටම යැවිය යුතු නැති අතර මගේ .bash_profile / .bashrc මට අවශ්‍ය ආකාරයට සකසා ගත හැකිය. ටර්මිනල් කවුළුවක් විවෘත කරන්න, ඔබ උනන්දුවක් දක්වන ඔබේ පරිසර විචල්‍යයන් පරීක්ෂා කරන්න launchctl getenv myVar, ඔබේ .bash_profile / .bashrc හි යමක් වෙනස් කරන්න, ටර්මිනල් කවුළුව වසා එය නැවත විවෘත කරන්න, විචල්‍යය දියත් කිරීම සමඟ නැවත පරීක්ෂා කරන්න, සහ voilá, එය වෙනස් කර ඇත.

  5. නැවතත්, පශ්චාත්-කඳුකර සිංහ ලෝකය සඳහා වන වෙනත් විසඳුම් මෙන්, ඕනෑම නව පරිසර විචල්‍යයන් යෙදුම් සඳහා ලබා ගත හැකි නම්, වෙනසෙන් පසු ඒවා දියත් කිරීම හෝ නැවත දියත් කිරීම අවශ්‍ය වේ.


1
ප්‍රයෝජනවත් පිළිතුර - ස්තූතියි. මම එය යාවත්කාලීන කළේ ඔබ සැකසූ පරිසර විචල්‍යයේ වටිනාකමට සමාන සලකුණු ඇති අවස්ථා ඔබේ මුල් විසඳුම විසින් හසුරුවා නොමැති නිසාය (උදා: CXX_FLAGS = "- mmacosx-version-min = 10.9"
ස්ටීව් බ්‍රෝබර්ග්

Te ස්ටීව්බ්‍රොබර්ග් - එක් අක්ෂර වෙනසක් පමණක් සෙඩ් අවශ්‍ය නොවී බාෂ් රීජෙක්ස් නිවැරදි කරයි! (මාව වැරදියට තේරුම් ගන්න එපා, මම
සෙඩ්ට

1
වඩා හොඳ ක්‍රමයක් තිබිය යුතු යැයි මම සිතුවෙමි, නමුත් මම බාෂ් ගුරු නොවේ, මට %%, ## වැනි දේ ගූගල් කිරීමට නොහැකි විය
ස්ටීව් බ්‍රෝබර්ග්

10

ඔබට අවශ්‍ය දේ කිරීමට ඉතා සරල ක්‍රමයක් මෙන්න. මගේ නඩුවේදී, එය ග්‍රැඩ්ල්ට වැඩ කිරීමට අවස්ථාව ලබා දුන්නේය (ඇන්ඩ්‍රොයිඩ් ස්ටුඩියෝ සඳහා).

  • පර්යන්තය විවෘත කරන්න.
  • පහත විධානය ක්‍රියාත්මක කරන්න:

    sudo nano /etc/paths හෝ sudo vim /etc/paths

  • විමසූ විට ඔබගේ මුරපදය ඇතුළත් කරන්න.

  • ගොනුවේ පහළට ගොස් ඔබට එක් කිරීමට අවශ්‍ය මාර්ගය ඇතුළත් කරන්න.
  • පහර Control + Xඉවත් කිරීමට.
  • වෙනස් කළ බෆරය සුරැකීමට 'Y' ඇතුළත් කරන්න.
  • නව පර්යන්ත කවුළුවක් විවෘත කර ටයිප් කරන්න:

    echo $PATH

PATH හි අවසානයට එකතු කර ඇති නව මාර්ගය ඔබ දැක ගත යුතුය.

මට මෙම විස්තර මෙම ලිපියෙන් ලැබුණි:

මැක් ඕඑස් එක්ස් 10.8 මවුන්ටන් ලයන් සහ ඉහළට PATH වෙත එක් කරන්න



7

සෑම ගොනුවක් සඳහාම අදහස් කරන්නේ කුමක්ද යන්න පිළිබඳව සංක්ෂිප්ත හා පැහැදිලි විය යුතුය

  • ~/.profile Terminal.app දියත් කරන සෑම අවස්ථාවකම එය ලබා ගනී
  • ~/.bashrc "සාම්ප්‍රදායිකව" යනු බාෂ් පරිසරය සඳහා වන සියලුම අපනයන ප්‍රකාශයන් සකසා ඇති ස්ථානයයි
  • /etc/paths සියලුම පරිශීලකයින් සඳහා PATH පරිසර විචල්‍යය ගොඩනැගීම සඳහා පෙරනිමි මාර්ග ලැයිස්තුවක් අඩංගු මැක් ඕඑස් හි ප්‍රධාන ගොනුව වේ
  • /etc/paths.d/ අතිරේක සෙවුම් මාර්ග ඇති ගොනු අඩංගු වේ

ටර්මිනල් නොවන වැඩසටහන් මඟින් ඔබේ ටර්මිනලය විසින් සිදුකරන පුළුල් PATH සහ MANPATH විචල්‍යයන් උරුම නොවේ! නිශ්චිත පරිශීලකයෙකු විසින් දියත් කරන ලද සියලුම ක්‍රියාවලීන් සඳහා පරිසරය සැකසීමට, එමඟින් පරිසර විචල්‍යයන් මැක් ඕඑස් එක්ස් ජීඅයිඅයි යෙදුම් සඳහා ලබා ගත හැකි වන පරිදි, එම විචල්‍යයන් ඔබේ අර්ථ දැක්විය යුතුය~/.MacOSX/environment.plist (ඇපල් ටෙක්නිකල් Q&A QA1067)

ඔබ environment.plistසමඟ සමමුහුර්ත කිරීමට පහත විධාන රේඛාව භාවිතා කරන්න /etc/paths:

defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"

6

/etc/launchd.conf OS X v10.10 (යොස්මයිට්), OS X v10.11 (එල් කැපිටන්), මැකෝස් v10.12 (සියෙරා), හෝ මැකෝස් v10.13 (හයි සියෙරා) හි භාවිතා නොවේ.


සිට launchctlමිනිසා පිටුව:

/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.

මෙම අසන්න වෙනස් පිළිතුරෙහි විස්තර කර ඇති ක්‍රමය මට වැඩ කරයි (නැවත පණගැන්වීමෙන් පසුව): තටාකයෙන් හෝ ස්පොට්ලයිට් වෙතින් දියත් කරන ලද යෙදුම් මා විසින් සකසන ලද පරිසර විචල්‍යයන් උරුම කර ගනී ~/Library/LaunchAgents/my.startup.plist. (මගේ නඩුව, මම කට්ටලයක් අවශ්ය LANGවෙත en_US.UTF-8, එය බ්රහ්ම පෙළ ප්ලගිනය සඳහා.)


නැවත පණගැන්වීමේදී අවසාන සැසියේ අයදුම්පත් නැවත ආරම්භ කිරීමට පෙර my.startup.plist පූරණය වීමට ඉඩ ඇති බව සහතික කරන පැටවුම් ඇණවුමක් තිබේද?
kunjbhai


3

ඒක සරලයි:

~ / .Profile සංස්කරණය කර ඔබේ විචල්‍යයන් පහත පරිදි තබන්න

$ vim ~ / .ප්‍රොෆයිල්

ලිපිගොනු තුළ:

MY_ENV_VAR = අගය

  1. සුරකින්න (: wq)

  2. පර්යන්තය නැවත ආරම්භ කරන්න (ඉවත් වී නැවත එය විවෘත කරන්න)

  3. ඒ සියල්ල හොඳින් ඇති බවට වග බලා ගන්න:

$ echo $ MY_ENV_VAR

$ අගය



3

තනි පරිශීලක වෙනස් කිරීමක් සඳහා, ~/.profileඔබ ලැයිස්තුගත කළ ඒවා භාවිතා කරන්න. විවිධ ලිපිගොනු Bash විසින් කියවන විට පහත සබැඳිය පැහැදිලි කරයි.

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

ඔබට ගු යෙදුම් සඳහා පරිසර විචල්‍යය සැකසීමට අවශ්‍ය නම් ඔබට ~ / .MacOSX / environment.plist ගොනුව අවශ්‍ය වේ


3

හොඳයි, /etc/pathsසහ ~/.MacOSX/environment.plistගොනු ගැන මට විශ්වාස නැත . ඒවා අලුත් ය.

නමුත් Bash .bashrcසමඟින්, සෑම නව ෂෙල් ආයාචනයක් සමඟම එය ක්‍රියාත්මක වන බව ඔබ දැන සිටිය යුතුය .bash_profile.

මැක් ඕඑස් එක්ස් සමඟ මෙය කොපමණ වාරයක් දැයි මම නොදනිමි. කවුළු පද්ධතිය සෑම දෙයක්ම දියත් කිරීමත් සමඟ වෙනස බිඳ වැටී ඇතැයි මම සිතමි.

පුද්ගලිකව, මට .bashrcඅවශ්‍ය සියල්ල සමඟ ගොනුවක් නිර්මාණය කිරීමෙන් මම ව්‍යාකූලත්වය ඉවත් කර පසුව කරන්නෙමි:

ln -s .bashrc .bash_profile

3

යෝජිත ප්‍රවේශයන්ට අමතරව සැලකිල්ලට ගත යුතු එක් දෙයක් නම්, අවම වශයෙන් OS X 10.5 (දිවියා) තුළ, සකසා ඇති විචල්‍යයන් launchd.confසැකසුම් සමඟ ඒකාබද්ධ වනු ඇත .profile. මෙය සැකසීම් ~/.MacOSX/environment.plistසඳහාද වලංගු යැයි මම සිතමි , නමුත් මම සත්‍යාපනය කර නැත.


3

මැක් ඕඑස් හි ඔබේ PATH පරිසර විචල්‍යය සකසන්න

ටර්මිනල් වැඩසටහන විවෘත කරන්න (මෙය පෙරනිමියෙන් ඔබගේ යෙදුම් / උපයෝගිතා ෆෝල්ඩරයේ ඇත). පහත විධානය ක්‍රියාත්මක කරන්න

touch ~/.bash_profile; open ~/.bash_profile

මෙය ඔබගේ සුපුරුදු පෙළ සංස්කාරකයේ ගොනුව විවෘත කරනු ඇත.

උදාහරණයක් ලෙස Android SDK සඳහා:

ඔබගේ Android SDK වේදිකා-මෙවලම් සහ මෙවලම් නාමාවලියට ඔබ මාර්ගය එක් කළ යුතුය. මගේ උදාහරණයේ දී SDK ස්ථාපනය කර ඇති නාමාවලිය ලෙස මම "/ Development / android-sdk-macosx" භාවිතා කරමි. පහත පේළිය එක් කරන්න:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

ගොනුව සුරකින්න සහ පෙළ සංස්කාරකයෙන් ඉවත් වන්න. ඔබගේ PATH යාවත්කාලීන කිරීම සඳහා .bash_profile ක්‍රියාත්මක කරන්න:

source ~/.bash_profile

දැන් ඔබ ටර්මිනල් වැඩසටහන විවෘත කරන සෑම අවස්ථාවකම ඔබේ PATH හි ඇන්ඩ්‍රොයිඩ් එස්ඩීකේ ඇතුළත් වේ.


3

මෙය ඇත්තෙන්ම පහසු සහ ඉක්මන් කළා. පළමුව පර්යන්තයෙන් ~ / .bash_profile සාදන්න :

touch .bash_profile

එවිට

open -a TextEdit.app .bash_profile

එකතු කරන්න

export TOMCAT_HOME=/Library/Tomcat/Home

ලේඛනය සුරකින්න, ඔබ අවසන් කර ඇත.


පර්ෆෙක්ටෝ. මම JAVA_HOME සඳහා පියවර අනුගමනය කළෙමි, අපනයන එකතු කළ JAVA_HOME = / පුස්තකාලය / ජාවා / JavaVirtualMachines / jdk1.8.0_201.jdk / අන්තර්ගතය / මුල් පිටුව සහ සැබෑ සාර්ථකත්වය!
නරේන්ද්‍ර සී

නියමයි areNarendraC!
CodeOverRide

2

එය තරමක් සරල ය. ගොනුව සංස්කරණය කරන්න .profile(vi, නැනෝ , උත්කෘෂ්ට පෙළ හෝ වෙනත් පෙළ සංස්කාරක) ගොනුව. ඔබට එය ~/නාමාවලියෙන් (පරිශීලක නාමාවලිය) සොයාගත හැකි අතර මේ ආකාරයට සකසන්න:

export MY_VAR=[your value here]

ජාවා නිවස සමඟ උදාහරණය:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

එය සුරකිමින් පර්යන්තය වෙත ආපසු යන්න.

ඔබට මෙය නැවත පූරණය කළ හැකිය:

source .profile

නැතහොත් ඔබේ පර්යන්ත කවුළුව වසා විවෘත කරන්න.


2

මෙහි සෙල්ලම් කිරීමේදී ෂෙල් වෙඩි වර්ග දෙකක් තිබේ.

  • පුරනය නොවීම: ඔබ Bash හි නව පිටපතක් ආරම්භ කරන සෑම අවස්ථාවකම .bashrc නැවත පූරණය වේ
  • පුරනය වන්න: .ප්‍රොෆයිල් පටවනු ලබන්නේ ඔබ පිවිසෙන විට පමණි, නැතහොත් එය බාෂ් කර එය ප්‍රවේශ ෂෙල් එකක් ලෙස භාවිතා කරන ලෙස පැහැදිලිවම බාෂ්ට පවසන්න.

එය බෑෂ් සමග, ගොනු බව මෙහි තේරුම් ගැනීම වැදගත් වේ .bashrcකියවීමට පමණක් අන්තර් හා රාජ්ය නොවන පිවිසුම් දෙක බව, ෂෙල් විසින්, ඔබ මිනිසුන් බොහෝ විට පැටවීම බව ඔබට පෙනී යනු ඇත වේ .bashrcදී .bash_profileමෙම සීමාවන් ජය ගැනීමට.

දැන් ඔබට මූලික අවබෝධය ඇති බැවින්, එය සැකසීමට මම ඔබට උපදෙස් දෙන ආකාරය වෙත යමු.

  • .profile: නොපවතින ලෙස එය සාදන්න. ඔබේ PATH සැකසුම එහි තබන්න.
  • .bashrc: නොපවතින නම් සාදන්න. ඔබගේ අන්වර්ථ නාම සහ අභිරුචි ක්‍රම එහි තබන්න.
  • .bash_profile: නොපවතින නම් සාදන්න. පහත සඳහන් දෑ එහි තබන්න.

.බෑෂ්_ ගොනුව:

#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc  # Get Aliases and Functions
#

2

පිවිසුම් ෂෙල්

/etc/profile

කවචය මුලින්ම ගොනුවේ විධාන ක්‍රියාත්මක කරයි /etc/profile. මූල වරප්‍රසාද සමඟ වැඩ කරන පරිශීලකයෙකුට Bash ක්‍රියාත්මක වන පරිශීලකයින් සඳහා පද්ධතිමය පෙරනිමි ලක්ෂණ ස්ථාපනය කිරීම සඳහා මෙම ගොනුව සැකසිය හැකිය.

.bash_profile
.bash_login
.profile

ඊළඟ සඳහා ෂෙල් පෙනුම ~/.bash_profile, ~/.bash_loginහා ~/.profile(~ / ඔබගේ නිවසේ බහලුම සඳහා කෙටිකාලීන අත මිල), ඒ සඳහා, එය සම්බ වන මෙම ගොනු පළමු දී විධාන ක්රියාත්මක. සකසා ඇති පෙරනිමි අභිබවා යාමට ඔබට මෙම ලිපිගොනු වලින් එකකට විධාන දැමිය හැකිය /etc/profile. අතථ්‍ය පර්යන්තයක් මත ධාවනය වන කවචයක් මෙම ලිපිගොනු වල විධාන ක්‍රියාත්මක නොකරයි.

.bash_logout

ඔබ ලොග් අවුට් වූ විට, බාෂ් ~/.bash_logoutගොනුවේ විධාන ක්‍රියාත්මක කරයි . මෙම ගොනුව බොහෝ විට තාවකාලික ලිපිගොනු ඉවත් කිරීම වැනි සැසියකින් පසු පිරිසිදු කරන විධාන දරයි.

අන්තර් ක්‍රියාකාරී Nonlogin Shells

/etc/bashrc

Bash මගින් කෙලින්ම ~/.bashrcඇමතුමක් නොතිබුණද, බොහෝ ලිපිගොනු අමතයි /etc/bashrc. මෙම සැකසුම මඟින් මූල වරප්‍රසාද සමඟ වැඩ කරන පරිශීලකයෙකුට නොබැඳි බාෂ් ෂෙල් සඳහා පද්ධතිමය පෙරනිමි ලක්ෂණ ස්ථාපිත කිරීමට ඉඩ ලබා දේ.

.bashrc

අන්තර්ක්‍රියාකාරී nonlogin shell එකක් ගොනුවේ විධාන ක්‍රියාත්මක කරයි ~/.bashrc. සාමාන්‍යයෙන් පිවිසුම් කවචයක් සඳහා ආරම්භක ගොනුවක්, එනම් .bash_profile, මෙම ගොනුව ධාවනය කරයි, එබැවින් පිවිසුම් සහ නොබැඳි ෂෙල් යන දෙකම විධාන ක්‍රියාත්මක කරයි .bashrc.

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


2

IOS හි ඇති සියලුම මැජික් යන්නේ sourceඔබේ පරිසර විචල්‍යයන් අපනයනය කරන ගොනුව සමඟ පමණි .

උදාහරණයක් වශයෙන්:

ඔබට මෙවැනි ගොනුවක් සෑදිය හැකිය:

export bim=fooo
export bom=bar

මෙම ගොනුව මෙසේ සුරකින්න bimbom.env, කරන්න source ./bimbom.ev. Voilá, ඔබට ඔබේ පරිසර විචල්‍යයන් ඇත.

මේවා සමඟ පරීක්ෂා කරන්න:

echo $bim

1

Bash සඳහා, ඔබගේ පරිසර විචල්‍යයන් ගොනුවට එක් /etc/profileකිරීමට උත්සාහ කරන්න. නැවත ආරම්භ කිරීමට අවශ්‍ය නැත, නව පර්යන්ත සැසියක් ආරම්භ කරන්න.

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.