Титла: Bash shell Публикувано от: Elmondo в Feb 07, 2006, 21:12 Здравейте, имам следният проблем. Ако напиша от конзолата
export ANT_HOME=/anthome ми се сетна юсер вариабъл със това име и адрес когато напиша echo $ANT_HOME izliza /anthome обаче ако вкарам това нещо във файл с разширение .sh i go povikam sus: sh somescript.sh sled tova kato napisha echo $ANT_HOME rezultata e nikuv, nishto ne se e zapamentilo ot executa na fiaila. Koeto e goliam problem za men. Opitah se da potursia v internet. Някакъв изход, но уви не намерих, моля помогнете. Титла: Bash shell Публикувано от: GoodT в Feb 07, 2006, 21:56 разширението .sh НЕ прави файла скрипт
трябва първия ред да е: #!/bin/sh ............ ............ и т.н. след това трябва да се направи изпълним с chmod +x ..... В общи линии е това. ОБАЧЕ ![]() Титла: Bash shell Публикувано от: v_badev в Feb 07, 2006, 23:02 Може да добавиш задаването на ANT_HOME в ~/.bashrc. Така няма да се налага да го задаваш ръчно всеки път като ти потрябва.
Титла: Bash shell Публикувано от: Elmondo в Feb 07, 2006, 23:36 Ами има проблем. Първо не мога да използвам .bashrc тъй като става въпрос за диплойване на една апликация, абеее.. сложна работа има си вече написани bat скриптове, целта е да ги препиша на баш. Само, че ако имам един скрипт и изпълня експорт върху енвиромен променливата стойността и се запазва само до края на изпълнението на скрипта. Причината за това е че се изпълнява в различен процес на баш от този на работещата система. Трябва по някакъв начин да избегна този проблем. Много моля ако знаете за какво става дума, помагайте!
Титла: Bash shell Публикувано от: ochinko в Feb 08, 2006, 00:49 Проблемът се избягва като дефинираш променливата в главния скрипт. Тогава ще е видима във всички скриптове, които той вика директно или индиректно, понеже средата се наследява.
Два дъщерни процеса обаче не могат да си комуникират през environment-а, има си други начини за това. Титла: Bash shell Публикувано от: в Feb 08, 2006, 09:16 Ето какво се казва по въпроса с export-ването на променливи на средата:
Advanced Bash Scripting Guide Титла: Bash shell Публикувано от: в Feb 08, 2006, 10:30
Титла: Bash shell Публикувано от: july в Feb 08, 2006, 11:14 $ . /somescript.sh
$ echo $ANT_HOME ne e по различно от: sh somescript.sh sled tova kato napisha echo $ANT_HOME по-скоро задълбай към source ( . )
Титла: Bash shell Публикувано от: Hapkoc в Feb 08, 2006, 11:56 Именно source е ключа към палатката. july е дал нагледно описание на командата source, която също може да се вика като '.', но е пропуснал да забележи, че rpetrov е сложил интервал м/у точката и пътя до скрипта.
Титла: Bash shell Публикувано от: july в Feb 08, 2006, 12:27 ами така е като спя
![]() Титла: Bash shell Публикувано от: bonbon в Feb 08, 2006, 12:29 Мога ли и аз да попитан нещо.
Имаме два скрипта a.sh и b.sh При стартирането си a.sh чете конфиг фаила a.cfg . След него се пуска скрипта b.sh, който се изпълнява от потребител, различен от този на a.sh. По някое време b.sh променя конфиг фаила a.cfg /естествено че има права за това/. Как може след като промени a.cfg b.sh да съобщи на a.sh да прочете отново a.cfg. Благодаря предварително. Титла: Bash shell Публикувано от: july в Feb 08, 2006, 13:07 ами примерно, b.sh като пипне a.cfg-то, да запише във файл, change=1
a.sh, периодично проверява за change и чете .cfg -to... или a.sh периодично чете cfg-то независимо дали има или няма промяна... или a.sh се пуска с respawn и b.sh като промени cfg, трепе a.sh, който пак се пуска, или директно трепе и пуска a.sh или a.sh се прави да приема kill -SIGUSR (примерно) и b.sh като промени cfg (или нещо следящо за промяна на cfg-to) праща -SIGUSR към a.sh .... има и още ![]() Титла: Bash shell Публикувано от: в Feb 08, 2006, 14:53
Извинения - някъде се е загубила втората точка - тази пред наклонената черта. Да се чете [ТОЧКА][ПРАЗНО][ТОЧКА][НАКЛ_ЧЕРТА] и т.н. Бел.: Май само bash намира скрипт в текущата директория. Да се внимава с bash - ако somescript.sh е в пътя, ще се обработят командите от него, а не от файла в текущата директория! Съвет: не пропускайте да зададете път_към_файла (абсолютен или относителен ) - води до по-малко главоболия. Титла: Bash shell Публикувано от: Elmondo в Feb 08, 2006, 23:03 Много благодаря на всички които писаха в темата. Решихте ми въпроса, с което темата може да се счита за затворена, поне що се отнася до мен.
|