Vra

Update:Die skakel hieronder nie'n volledige antwoord.Om te stel die pad of veranderlike in twee plekke (een vir die GUI en een vir die dop) is lam.

Nie Duplikaat van: Die opstel van die omgewing veranderlikes in OS X?


Komende van'n Windows agtergrond waar dit is baie maklik om te stel en te verander die omgewing veranderlikes (net gaan na die Stelsel Eienskappe > Gevorderde > Omgewing Veranderlikes), beteken dit nie lyk om te wees wat reguit vorentoe op Mac OS 10.5.Die meeste verwysings sê ek moet werk /etc/profiel of ~/.profiel.Is diegene wat die ekwivalent van die Stelsel Veranderlikes en die Gebruiker Veranderlikes?Byvoorbeeld, waar moet ek stel my JAVA_HOME veranderlike?


EDIT:

Ek wil in staat wees om toegang te verkry tot die veranderlike van die terminale sowel as'n app soos Verduistering.Ook, ek hoop ek hoef nie te herlaai/logout te maak dit neem effek.

Was dit nuttig?

Oplossing

Daar is geen behoefte vir duplisering. Jy kan omgewing veranderlikes gebruik word deur launchd stel (en kind prosesse, dit wil sê alles wat jy begin van Kollig) met behulp van launchctl setenv.

Byvoorbeeld, as jy wil om jou huidige pad in launchd spieël na die oprigting in .bashrc of waar ook al:

PATH=whatever:you:want
launchctl setenv PATH $PATH

omgewing veranderlikes word nie outomaties opgedateer in hardloop aansoeke. Jy sal nodig hê om aansoeke op gang te bring om die updated omgewing veranderlikes kry (alhoewel jy net veranderlikes kan stel in jou dop, bv PATH=whatever:you:want; daar is geen behoefte om die terminale op gang te bring).

Ander wenke

Daar is verskeie plekke waar jy kan stel die omgewing veranderlikes.

  • ~/.profile:gebruik dit vir veranderlikes wat jy wil om te stel in alle programme van stapel gestuur van die terminale (let daarop dat, in teenstelling met op Linux, al die skulpe oop in die Terminale.app is login skulpe).
  • ~/.bashrc:dit is opgeroep vir doppe wat nie inteken skulpe.Gebruik dit vir die aliasse en ander dinge wat nodig het om te word weer in subshells, nie vir die omgewing veranderlikes wat is geërf het.
  • /etc/profile:dit is gelaai voor ~/.profiel, maar is andersins ekwivalent.Gebruik dit wanneer jy wil hê dat die veranderlike toe te pas om te terminale programme van stapel gestuur deur al die gebruikers op die masjien (met die veronderstelling hulle gebruik bash).
  • ~/.MacOSX/environment.plist:dit is gelees deur loginwindow op login.Dit is van toepassing op alle aansoeke, insluitend GUI kinders, behalwe dié van stapel gestuur deur die Kollig in 10.5 (nie 10.6).Dit vereis dat jy om te teken uit en teken weer vir veranderinge in werking tree.Hierdie lêer is nie meer ondersteun word so van die OS X 10.8.
  • jou gebruiker se launchd byvoorbeeld:dit geld vir alle programme van stapel gestuur deur die gebruiker, GUI en CLI.Jy kan aansoek doen om veranderinge op enige tyd deur gebruik te maak van die setenv die opdrag in launchctl. In teorie, jy moet in staat wees om te sit setenv opdragte in ~/.launchd.conf, en launchd sou lees hulle outomaties wanneer die gebruiker inteken in, maar in die praktyk steun vir hierdie lêer is nooit geïmplementeer word.In plaas daarvan, jy kan gebruik om'n ander meganisme om uit te voer'n script op die teken, en dat die skrif noem launchctl om die launchd die omgewing.
  • /etc/launchd.conf:dit is gelees deur launchd wanneer die stelsel begin-up en wanneer'n gebruiker inteken in.Hulle invloed op elke enkele proses op die stelsel, want launchd is die wortel proses.Veranderinge aan te pas by die wortel launchd kan jy die pyp aan die opdragte in sudo launchctl.

Die fundamentele dinge om te verstaan is:

  • omgewing veranderlikes is geërf deur'n proses se kinders by die tyd wat hulle is gevurk.
  • die wortel proses is'n launchd geval, en daar is ook'n aparte launchd byvoorbeeld per gebruiker sessie.
  • launchd kan jy om te verander sy huidige omgewing veranderlikes met behulp van launchctl;die veranderlikes opgedateer word dan geërf het deur al die nuwe prosesse dit vurke van toe af.

Voorbeeld van die opstel van'n omgewing veranderlike met launchd:

echo setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE | launchctl

Nou, begin jou GUI app wat gebruik maak van die veranderlike, en voila!

Om te werk rondom die feit dat ~/.launchd.conf nie werk nie, kan jy die volgende skrif in ~/Library/LaunchAgents/local.launchd.conf.plist:

<?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>local.launchd.conf</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl &lt; ~/.launchd.conf</string>    
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

Dan kan jy sit setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE binne-in ~/.launchd.conf, en dit sal uitgevoer word op elke teken.

Let daarop dat, wanneer pype'n opdrag lys in launchctl in hierdie mode, sal jy nie in staat wees om te stel omgewing veranderlikes met waardes wat ruimtes.As jy nodig het om dit te doen, kan jy bel launchctl soos volg: launchctl setenv MYVARIABLE "QUOTE THE STRING".

Ook, daarop te let dat ander programme wat loop op login kan uit te voer voor die launchagent, en dus kan nie sien nie die omgewing veranderlikes dit stel.

Ek dink wat die OP is op soek na 'n eenvoudige, vensters-agtige oplossing.

hier ya gaan:

https://www.macupdate.com/app/mac/14617/rcenvironment

Jy kan lees oor linux, wat is redelik naby aan wat Mac OS X is. Of jy kan lees op BSD Unix, wat is 'n bietjie nader. Vir die grootste deel, hoef die verskille tussen Linux en BSD nie veel.

/etc/profile is stelsel omgewing veranderlikes.

~/.profile is gebruikersvriendelik spesifieke omgewing veranderlikes.

"waar kan ek my JAVA_HOME veranderlike?"

  • Het jy verskeie gebruikers? Moet hulle omgee? Sou jy gemors 'n ander gebruiker deur die verandering van 'n /etc/profile?

In die algemeen, ek verkies om nie te mors met die hele stelsel instellings, selfs al het ek is die enigste gebruiker. Ek verkies om my plaaslike instellings te wysig.

Vir GUI programme, sal jy het om te skep en wysig ~/.MacOSX/environment.plist. Meer besonderhede hier . Jy sal nodig hê om uit te teken vir hierdie in werking tree. Ek is nie seker of hulle ook programme van stapel gestuur vanaf Terminal raak, maar ek neem aan hulle sou doen.

Vir programme van stapel gestuur vanaf Terminal, jy kan ook die ~ / .profile lêer wysig.

Net oop die ~/.profile lêer, via nano in Terminal en tik daar:

export PATH=whatever/you/want:$PATH

Stoor hierdie lêer (cmd + X en Y). Daarna kan jy afteken / login weer of net maak 'n nuwe blad in Terminal en probeer gebruik jou nuwe veranderlike.

moet asseblief nie vergeet om by te voeg ": $ PATH". Na alles / u / wil, anders sal jy al die paaie in PATH veranderlike, wat daar voor dat was vee

Sinkroniseer OS X omgewing veranderlikes vir command line en GUI aansoeke van 'n enkele bron met OSX-ENV-sync .

Ek gepos ook 'n antwoord op 'n verwante vrae hier .

As jy wil om te verander omgewing veranderlikes permanent op macOS, stel hulle in /etc/paths. Nota, hierdie lêer is slegs-lees-by verstek, sodat jy sal hê om te chmod vir die skryf regte.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top