Автор Тема: Bash shell  (Прочетена 4575 пъти)

Elmondo

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Bash shell
« -: 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. Някакъв изход, но уви не намерих, моля помогнете.
Активен

GoodT

  • Напреднали
  • *****
  • Публикации: 361
    • Профил
Bash shell
« Отговор #1 -: Feb 07, 2006, 21:56 »
разширението .sh НЕ прави файла скрипт
трябва първия ред да е:

#!/bin/sh
............
............ и т.н.

след това трябва да се направи изпълним с chmod +x .....

В общи линии е това.
ОБАЧЕ '<img'> може да не съм те разбрал правилно ,пиши ако е така.
Активен

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
Bash shell
« Отговор #2 -: Feb 07, 2006, 23:02 »
Може да добавиш задаването на ANT_HOME в ~/.bashrc. Така няма да се налага да го задаваш ръчно всеки път като ти потрябва.
Активен

Elmondo

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Bash shell
« Отговор #3 -: Feb 07, 2006, 23:36 »
Ами има проблем. Първо не мога да използвам .bashrc тъй като става въпрос за диплойване на една апликация, абеее.. сложна работа има си вече написани bat скриптове, целта е да ги препиша на баш. Само, че ако имам един скрипт и изпълня експорт върху енвиромен променливата стойността и се запазва само до края на изпълнението на скрипта. Причината за това е че се изпълнява в различен процес на баш от този на работещата система. Трябва по някакъв начин да избегна този проблем. Много моля ако знаете за какво става дума, помагайте!
Активен

ochinko

  • Напреднали
  • *****
  • Публикации: 125
    • Профил
Bash shell
« Отговор #4 -: Feb 08, 2006, 00:49 »
Проблемът се избягва като дефинираш променливата в главния скрипт. Тогава ще е видима във всички скриптове, които той вика директно или индиректно, понеже средата се наследява.

Два дъщерни процеса обаче не могат да си комуникират през environment-а, има си други начини за това.
Активен

  • Гост
Bash shell
« Отговор #5 -: Feb 08, 2006, 09:16 »
Ето какво се казва по въпроса с export-ването на променливи на средата:
Advanced Bash Scripting Guide
Активен

  • Гост
Bash shell
« Отговор #6 -: Feb 08, 2006, 10:30 »
Цитат (Elmondo @ Фев. 07 2006,22: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. Някакъв изход, но уви не намерих, моля помогнете.

Примерен код
$ . /somescript.sh
$ echo $ANT_HOME
Активен

july

  • Напреднали
  • *****
  • Публикации: 324
    • Профил
Bash shell
« Отговор #7 -: Feb 08, 2006, 11:14 »
$ . /somescript.sh
$ echo $ANT_HOME

ne e по различно от:
sh somescript.sh
sled tova kato napisha echo $ANT_HOME


по-скоро задълбай към source ( . )
Примерен код
[july@sf-m-july ~]$ echo $name

[july@sf-m-july ~]$ echo $names

[july@sf-m-july ~]$ cat pesho
name=pesho
export names=goshovi
[july@sf-m-july ~]$ . pesho
[july@sf-m-july ~]$ echo $name
pesho
[july@sf-m-july ~]$ echo $names
goshovi
[july@sf-m-july ~]$
Активен

Hapkoc

  • Напреднали
  • *****
  • Публикации: 2117
    • Профил
Bash shell
« Отговор #8 -: Feb 08, 2006, 11:56 »
Именно source е ключа към палатката. july е дал нагледно описание на командата source, която също може да се вика като '.', но е пропуснал да забележи, че rpetrov е сложил интервал м/у точката и пътя до скрипта.
Активен

july

  • Напреднали
  • *****
  • Публикации: 324
    • Профил
Bash shell
« Отговор #9 -: Feb 08, 2006, 12:27 »
ами така е като спя'<img'>
Активен

bonbon

  • Напреднали
  • *****
  • Публикации: 112
  • Distribution: Debian
  • Window Manager: Gnome
    • Профил
    • WWW
Bash shell
« Отговор #10 -: 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.

Благодаря предварително.
Активен

july

  • Напреднали
  • *****
  • Публикации: 324
    • Профил
Bash shell
« Отговор #11 -: 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 ....

има и още '<img'>
Активен

  • Гост
Bash shell
« Отговор #12 -: Feb 08, 2006, 14:53 »
Цитат (july @ Фев. 08 2006,12:14)
...
ne e по различно от:
sh somescript.sh

Извинения - някъде се е загубила втората точка - тази пред наклонената черта. Да се чете [ТОЧКА][ПРАЗНО][ТОЧКА][НАКЛ_ЧЕРТА] и т.н.

Бел.: Май само bash намира скрипт в текущата директория. Да се внимава с bash - ако somescript.sh е в пътя, ще се обработят командите от него, а не от файла в текущата директория!

Съвет: не пропускайте да зададете път_към_файла (абсолютен или относителен ) - води до по-малко главоболия.
Активен

Elmondo

  • Напреднали
  • *****
  • Публикации: 12
    • Профил
Bash shell
« Отговор #13 -: Feb 08, 2006, 23:03 »
Много благодаря на всички които писаха в темата. Решихте ми въпроса, с което темата може да се счита за затворена, поне що се отнася до мен.
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Shell?
Настройка на програми
Cnupo 6 3819 Последна публикация Feb 06, 2004, 00:57
от SGM
shell
Настройка на програми
svetoslav 3 3291 Последна публикация Mar 21, 2004, 18:03
от
Bash shell scripting
Общ форум
sunhater 10 3946 Последна публикация Jun 11, 2004, 16:37
от sunhater
Shell-ove
Коментар
investor 5 3594 Последна публикация Feb 10, 2006, 21:22
от investor
Bash shell script - многозадачност
Общ форум
Astor 10 5556 Последна публикация May 29, 2012, 22:33
от Astor