LINUX.ORG.RU

bash: не работает export


0

0

Здравствуйте!

Как узнать почему 
$ export QQQ=qqq
выполненный в консоли создает переменную, а тоже самое, но в bash скрипте -- нет? В .bash_profile, кстати, тоже.
Сам скрипт выполняется, т.к. echo bla-bla отрабатывает.

Дистрибутив -- debian какой-то из недавних.

Спасибо!

а ну так блин: ты же его наверно запускаешь в новом процессе? Переменные не вернутся к родителю.

man sh

там есть команда . или source

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Прежде всего, спасибо, dilmah, за столь быстрый ответ! %)

Не совсем понял.
Вот, допустим, скрипт:
---script---
#!/bin/bash

QQQ=qqq
export QQQ
---script---

запускаем:

$ ./script
$ echo $QQQ
$

в результате ничего.
export разве не глобально устанавливает переменные?

efix
() автор топика
Ответ на: комментарий от efix

у каждого процесса есть environment в котором есть переменные. export это флаг на переменной который говорит что ее нужно передать всем детям.

./script запускает процесс-ребенка и переменная QQQ определяется в нем. Она не вернется родителю.

Нужно делать:

. ./script

dilmah ★★★★★
()
Ответ на: комментарий от efix

> точка пробел точка слэш? так?

да

> и потом, почему это не работает так же в .bash_profile?

детально опиши что у тебя в .bash_profile, и как ты запускаешь шелл.

dilmah ★★★★★
()
Ответ на: комментарий от efix

и потом, почему это не работает так же в .bash_profile?

потому, что ~/.bash_profile выполняется тем же экземпляром шелла, в котором ты потом работаешь, т.е. это эквивалентно как раз команде source

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.