/ Forside / Teknologi / Hardware / Mac / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Mac
#NavnPoint
UlrikB 4810
kipros 1675
Klaudi 1010
myg 920
pifo 907
Stouenberg 838
molokyle 830
Bille1948 815
rotw 760
10  EXTERMINA.. 750
Hvordan bliver variable exporteret fra
Fra : Peter Farsinsen


Dato : 05-06-08 15:39

Hej,

Måske mere UNIX end Mac, men jeg tager alligevel chancen...

Subject siger vist nogenlunde det hele, men for god ordens skyld.

I ~/.profile har jeg eksempelvis:

export FOO=bar

launchd kører nogle bash scripts for mig, hvor jeg gerne vil bruge $FOO.
Det kan jeg ikke pt. (`logger -s Foo er: "$FOO"` logger bare 'Foo er:'),
hvilket jeg ikke forstår, da scriptet afvikles under min bruger.

Kan nogen forklare hvorfor det ikke virker og evt. fortælle, hvordan jeg
får det til at virke? Nåja, bash er rimelig nyt for mig, så bær over med
mig, hvis spørgsmålet er fuldstændig håbløst ;)

--
Peter Farsinsen
fornavn@efternavn.dk

 
 
Thomas Bjorn Anderse~ (05-06-2008)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 05-06-08 21:35

Peter Farsinsen <fornavn@efternavn.dk> writes:

> launchd kører nogle bash scripts for mig, hvor jeg gerne vil bruge
> $FOO. Det kan jeg ikke pt. (`logger -s Foo er: "$FOO"` logger bare
> 'Foo er:'), hvilket jeg ikke forstår, da scriptet afvikles under min
> bruger.

Når bash startes via launchd er det en non-interaktiv non-login shell,
og dermed bliver .profile ikke indlæst. Jeg er ikke 100% sikker, men
jeg mener, at der slet ikke bliver indlæst nogle filer automatisk af
bash. Kig i afsnittet "Invocation" i "man bash".

--
Thomas Bjorn Andersen
+++ATH

Peter Farsinsen (07-06-2008)
Kommentar
Fra : Peter Farsinsen


Dato : 07-06-08 10:27

Thomas Bjorn Andersen wrote:

>> launchd kører nogle bash scripts for mig, hvor jeg gerne vil bruge
>> $FOO. Det kan jeg ikke pt. (`logger -s Foo er: "$FOO"` logger bare
>> 'Foo er:'), hvilket jeg ikke forstår, da scriptet afvikles under min
>> bruger.
>
> Når bash startes via launchd er det en non-interaktiv non-login shell,
> og dermed bliver .profile ikke indlæst. Jeg er ikke 100% sikker, men
> jeg mener, at der slet ikke bliver indlæst nogle filer automatisk af
> bash. Kig i afsnittet "Invocation" i "man bash".

Hmm, tak for svaret. Jeg er stadig ikke helt sikker, men det ser ud til,
at du har ret. Afsnittet om Invocation er lidt rodet, synes jeg.

Helt konkret har jeg et script der læser proxy settings fra scutil og
laver nogle pæne strenge som eksporteres til http_proxy, https_proxy
osv. Har du en go' idé til, hvordan jeg gør dem tilgængelige for scripts
kørt af launchd?

--
Peter Farsinsen
fornavn@efternavn.dk

Thomas Bjorn Anderse~ (07-06-2008)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 07-06-08 22:09

Peter Farsinsen <fornavn@efternavn.dk> writes:

> Helt konkret har jeg et script der læser proxy settings fra scutil og
> laver nogle pæne strenge som eksporteres til http_proxy, https_proxy
> osv. Har du en go' idé til, hvordan jeg gør dem tilgængelige for
> scripts kørt af launchd?

Personligt ville jeg nok source $HOME/.bashrc i starten af
scriptet. Der er vel ikke noget i .bashrc som ikke kan tåle at blive
kørt?


--
Thomas Bjorn Andersen
+++ATH

Thomas Bjorn Anderse~ (12-06-2008)
Kommentar
Fra : Thomas Bjorn Anderse~


Dato : 12-06-08 13:52

Peter Farsinsen <fornavn@efternavn.dk> writes:

> Thomas Bjorn Andersen wrote:
>>> Helt konkret har jeg et script der læser proxy settings fra scutil og
>>> laver nogle pæne strenge som eksporteres til http_proxy, https_proxy
>>> osv. Har du en go' idé til, hvordan jeg gør dem tilgængelige for
>>> scripts kørt af launchd?
>>
>> Personligt ville jeg nok source $HOME/.bashrc i starten af
>> scriptet. Der er vel ikke noget i .bashrc som ikke kan tåle at blive
>> kørt?
>
> Det er da i al fald en mulighed - er det ikke dårlig praksis ellers?

Personligt ville jeg foretrække at gøre scriptet uafhængigt af
eksterne kilder. Evt. konfigurationer af proxy'er o.l. kunne man lave
som en .conf fil, der blev særskilt læst ind, hvis man ikke bare
indsætter variablene i toppen af scriptet. Hvis der "blot" er tale om
et script til privat brug, som ikke skal sikre dit firmas fortsatte
overlevelse, så ville jeg gå efter den nemmeste løsning der virker

> Jeg har lige opdaget at launchctl gør det muligt at sætte variable med
> setenv (hvilket gør dem tilgængelige for launchd). Det ser ud til at
> virke, så jeg tror, at jeg går for den løsning.

Herligt, jeg krydser fingre for at du får det til at virke.

--
Thomas Bjorn Andersen
+++ATH

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408882
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste