Показать сообщение отдельно

  #3  
Старый 29.12.2006, 18:49
Lombardo
Новичок
Регистрация: 18.11.2006
Сообщений: 16
Провел на форуме:
70250

Репутация: 3
По умолчанию

Цитата:
Сообщение от faust45  
В скрипте запуска проги есть такое
export LD_LIBRARY_PATH=/*/jprofiler4/bin/linux-x86/
но после того как етот скрипт отрабатывает я делаю
echo $LD_LIBRARY_PATH
а оно мне выводит пустую строку
Не понимаю как так?
Оч просто.

dmitry@Dmitry:~> echo 'export I=1 && echo $I' > I.sh
dmitry@Dmitry:~> sh I.sh
1
dmitry@Dmitry:~> echo $I

dmitry@Dmitry:~> . I.sh
1
dmitry@Dmitry:~> echo $I
1
dmitry@Dmitry:~>


Дело в том, что когда ты запускаеш очередной баш-процесс командой (например)
dmitry@Dmitry:~> sh скрипт
то система создает дочерний процесс sh и окружение для работы этого процесса, создается так называемая "песочница", в процессе работы скрипта переменные экспортируются в эту "песочницу", после работы окончания работы дочернего процесса эта паямять очищается. Все переменные, созданые во время его работы - удаляются.

Когда мы запускаем скрпит так:
dmitry@Dmitry:~> . I.sh
то мы его запускаем на исполнение в _текущем_ процессе сшелла, и дочерний процесс не создается, все переменные экспортируются в текущую оболочку:
dmitry@Dmitry:~> . I.sh
1
dmitry@Dmitry:~> echo $I
1
dmitry@Dmitry:~>