export в командном файле (не хочет работать)

Модератор: Модераторы разделов

Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

export в командном файле

Сообщение GRS »

Код: Выделить всё

#!/bin/bash
export SOME_VAR="value"

запускаю, набираю export - в списке ее нет, ошибок при выполнении скрипта естественно тоже.
Вручную написать - все будет. Так вот у меня вопросы такие:
1) Почему не срабатывает ? Такое ощущение что эта переменная только во время работы скрипта есть, а после его выполнения она исчезает.
2) Как сделать так чтобы работало ?


----
по поводу первого так оно и есть, добавил в скрипт export и стало видно что переменная добавляется только на время выполнения скрипта ... а мне нужно чтобы она осталась на весь сеанс работы ...
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: export в командном файле

Сообщение diesel »

Код: Выделить всё

diesel@beezir:~$ ./test.sh
diesel@beezir:~$ export |grep value
diesel@beezir:~$ . ./test.sh
diesel@beezir:~$ export |grep value
declare -x SOME_VAR="value"
diesel@beezir:~$ cat test.sh
#!/bin/bash
export SOME_VAR="value"

diesel@beezir:~$ export |grep value
diesel@beezir:~$ source test.sh
diesel@beezir:~$ export |grep value
declare -x SOME_VAR="value"
Спасибо сказали:
Аватара пользователя
GRS
Сообщения: 236
Статус: C++ Pro
ОС: Suse10.2/XP

Re: export в командном файле

Сообщение GRS »

Спасибо, понял почти все, кроме того как работает ".", это аналог source или у нее есть и другая функциональность ?
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: export в командном файле

Сообщение Folderx »

(GRS) писал(а):1) Почему не срабатывает ? Такое ощущение что эта переменная только во время работы скрипта есть, а после его выполнения она исчезает.

В скрипте она нужна для того, чтобы программы которые из него вызываются видели переменные этого скрипта.
Сам скрипт вызывается откуда? Правильно, он вызывается из текущей оболочки, все процессы вызванные из текущей оболочки видят export этой оболочки.

допустим в .bashrc добавили строчку экспорта какой-нибудь переменной, потом при загрузке системы он запустился и все программы вызванные дальше из bash имеют доступ к общим переменным.

У каждого процесса своя личная среда, и в этой среде можно сделать доступными для других процессов ниже уровнем, какие-нибудь переменные.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: export в командном файле

Сообщение diesel »

GRS писал(а):
15.01.2008 16:00
Спасибо, понял почти все, кроме того как работает ".", это аналог source или у нее есть и другая функциональность ?

запуск скрипта в текущей оболочке. делают . и source примерно одно и то же.

Folderx писал(а):
16.01.2008 01:15
У каждого процесса своя личная среда, и в этой среде можно сделать доступными для других процессов ниже уровнем, какие-нибудь переменные.

если считать уровни от init'а(а откуда еще считать?), то можно сделать доступными переменный для процессов уровнем выше, т.е. запущенных из текущего процесса.
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: export в командном файле

Сообщение Folderx »

(diesel) писал(а):если считать уровни от init'а(а откуда еще считать?), то можно сделать доступными переменный для процессов уровнем выше, т.е. запущенных из текущего процесса.

Переменные вниз проходят вверх нет, потому что кто создаёт переменную тот её за собой и забирает.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: export в командном файле

Сообщение diesel »

Folderx писал(а):
17.01.2008 00:38
(diesel) писал(а):если считать уровни от init'а(а откуда еще считать?), то можно сделать доступными переменный для процессов уровнем выше, т.е. запущенных из текущего процесса.

Переменные вниз проходят вверх нет, потому что кто создаёт переменную тот её за собой и забирает.

а какой низ? или у нас дерево процессов растет корнем вверх? ))))))
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5456
ОС: Gentoo

Re: export в командном файле

Сообщение /dev/random »

diesel писал(а):
17.01.2008 16:22
а какой низ? или у нас дерево процессов растет корнем вверх? ))))))

Ну в математике обычно корнем вверх и изображают. Чтобы достраивать проще было, и не налезать на уже написанные строчки.
Спасибо сказали:
Аватара пользователя
Folderx
Сообщения: 296
ОС: fedora, mandriva

Re: export в командном файле

Сообщение Folderx »

(diesel) писал(а):а какой низ? или у нас дерево процессов растет корнем вверх? ))))))

Я представляю дерево папок, дерево процессов в системе, начинаются они с нуля но растут вниз ;)
Спасибо сказали: