környezeti változó(k) készítése

Debian Squeeze -t használok.
Próbálok, felhasználó globális "környezeti" változót létrehozni:


#!/bin/sh
WEBCAM_DEVICE="/dev/video0"
export WEBCAM_DEVICE
...
exit 0

Ha lefuttatom a scriptet, és utána kiadom a $echo $WEBCAM_DEVICE parancsot üres stringet kapok vissza (egy szál soremelés). Nem tudja valaki mit szúrok el?

Hozzászólások

A környezeti változók addig vannak meg, amíg a környezet létezik. Amikor az exit kilép a környezetből, annak a környezetnek a változói elvesznek.

próbáld így:
source script_neve.sh

Értem :(
A source valami.sh megoldás ismerem de így a cgi scriptekben (akik használnák a változókat) abszolút path -t kell megadnom :(
Nem szeretném a bashrc -be sem betenni.
Közben, megnéztem, hogy az így beállított változókat, a később ugyanebben a scriptben felállított screen session viszont megkapja. Lehet hogy egyenlőre ez így megoldja.
Más lehetőség nincs?

* Én egy indián vagyok. Minden indián hazudik.

Nem nyitok ehhez új topicot. Jelenleg a screen, mint futtatási környezet tökéletesen működik. Kicsit zűrös, de egy scriptben sikerült elraknom mind az indítást mind a leállítást. Az egyszerűbb esetben elindul a screen, kreál a session -ön belül még három screen -t. Majd az 1 "window" -ban eléindítja a camera grabbert, a másodikban a busyboxot, mint http szerver (applet) és a harmadikban egy ssh reverse tunnel csatornát nyit. Minden debug információt a saját stdout -ra nyom - működik.
írtam egy leállító scriptet is, ez szépen kiekeresi a ps segítségével a pid -ket ,és sorban lelővi a programokat, végül bezárja a screen session -t.
A gond, hogy esetleg több busybox vagy ssh is futhat, amit nem kellene leállítani, azonban a screen -ben indító parancsok esetében nem tudom a pidet kinyerni - a program nem áll le, így a pid nem lekérdezhető, csak grep segítségével azonosítható.
Tudtok valami olyanról ami elindít egy folyamatot, a pid -jét elrakja és kilép?

* Én egy indián vagyok. Minden indián hazudik.

start-stop-daemon a neve neki.
De legrosszabb esetben par sorbol lehet ilyent irni, valamelyik exec* fuggveny kell neked, a pidet meg leirod egy fajlba.

Egyebken en igy oldanam meg a screenezest is, valami egyszeru kis C wrapper + forkok.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Nem egeszen.

C-ben kicsit intelligensebben lehet csinalni ezeket a dolgokat, mint ami a script felhasznaloknak egyaltalan valaha jut.
En olyanra gondolok, hogy magat az alkalmazast leforkolni az exec hivas elott, a child pidjet hasznalni mint "pid", azt leirod valahova, az exec* hivasok meg arrol szolnak (vagyis, van olyan, ami arrol szol), hogy pidvaltas nelkul inditsunk alkalmazast.
Valojaban te a child process PID-jet fogod tudni (peldaul ugy, hogy egy FIFO-n elkuldi neked), de ez teged egy cseppet sem kell, hogy zavarjon, mivel ezen a PID-en nehany pillanattal kesobb mar a keresett alkalmazas fog futni.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Jelenleg, egy már előkészített, nevesített screen session -ben indítom el egy "külső" (nem a screenben futó) shell scriptből, az ffserver indítása pl. így fest:

/usr/bin/screen -x webcam -p 1 -X eval "stuff \"ffserver -f ffserver.conf\015\""

A webcam screen session, 1 ablakában elindítja a megfelelő konfigurációs fájlal az ffserver -t.
Attól tartok ezt már csak ps axu -ból lehet ki greppelni.

* Én egy indián vagyok. Minden indián hazudik.

ezt nem így kell inkább ?

#!/bin/sh
export WEBCAM_DEVICE=/dev/video0
...
exit 0

nálam így van, és működik.