powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Почему не устанавливается переменная окружения?
18 сообщений из 18, страница 1 из 1
Почему не устанавливается переменная окружения?
    #38785084
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Запускаю скрипт, в котором

export ANT_HOME="$(cd ../..;pwd)"

после это запускаю echo $ANT_HOME и там пусто.

если писать echo $(cd ../..;pwd), то отображается путь к директории и сообщение:

-bash: ../..: is a directory

Почему через скрипт не устанавливается переменная?

Спасибо.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38785148
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Запускаю скрипт
при запуске порождается новый дочерний процесс (интерпретатор (bash)) выполняет ваш скрипт, устанавливает там переменную ANT_HOME, затем умирает, вместе со всеми переменными.

То что вы хотите делается так
source мой_скрипт_который_устанавливает_переменные.sh
или синоним source . (точка) (в баше)
. мой_скрипт_который_устанавливает_переменные.sh
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38785156
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и вообще вы фигню какую-то делаете, зачем ANT_HOME устанавливать, да еще и относительным путем и до кучи cd. Позвали сантехника удалять зубы через задний проход.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38785256
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,

спасибо. проблема была в запуске скрипта.

запустил так . script.sh и заработало.

А в каких случаях нужно писать так:

. ./script.sh ?

здесь написано

http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Bash-Guide-1.12-ru/bash-guide-02-1.html

что "Если вы в переменной PATH не указали директорий scripts или . (текущий каталог)", то писать так ./script_name.sh

я проверил, у меня этот случай, тем не менее . script.sh - отрабатывает нормально, то есть я не писал так . ./script.sh
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38785266
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus. ./script.sh ?
не знаю, возможно не в bash, а в других шелах, точка например тоже синоним source из баша, и в стандартном sh или в каком-нибудь ash не заработает.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38785280
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денис,

понятно, спасибо.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786209
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Журавлев Денисmr_virtus. ./script.sh ?
не знаю, возможно не в bash, а в других шелах, точка например тоже синоним source из баша, и в стандартном sh или в каком-нибудь ash не заработает.Скорее наоборот
source -- это фишка первоначально только csh, а bash (да и zsh), как обычно, впихивает в себя все невпихуемое
Для стандартного sh и ksh (ну и bash, zsh, конечно) юзается точка
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786281
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtus,


точка запускает скрипт в данном экземпляре shell, а в случае запуска как команды - в новом экземпляре, и после его завершения значение переменной теряется.

export делает переменную доступной для дочерних процессов, а не для родительского.

и кроме всего этого, для использования вывода команды вообще то используют не двойные кавычки, а бэктик (обратный апостроф).
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786283
Фотография Alexey Zhidkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusя проверил, у меня этот случай, тем не менее . script.sh - отрабатывает нормально, то есть я не писал так . ./script.sh

смешались в кучу кони, люди.. :)

. script.sh верно, отработает.

а если в PATH каталог со скриптом не включен, то script.sh (без source) не отработает, только ./script.sh
т.е. явно должен указать текущий каталог.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786433
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Zhidkov,

спасибо, так в том то и дело, что ни текущий каталог вызова команды ни точка не включены в PATH, тем не менее

Я сначала запускаю, например:

1. echo $ANT_HOME

/apps/ant

2. ANT_HOME=""
3. echo $ANT_HOME
получаю пустую строку
4. запускаю скрипт как . script.sh
5. echo $ANT_HOME
/apps/ant

то есть в gnu/linux получается не обязательно писать так . ./script.sh чтоб выполнился скрипт. достаточно просто . script.sh даже если в path ничего не прописано.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786438
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

спасибо,

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

тем не менее

export ANT_HOME="$(cd ../..;pwd)"

отрабатывает и переменая устанавливается.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786439
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

спасибо.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786547
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mr_virtusто есть в gnu/linux получается не обязательно писать так . ./script.sh чтоб выполнился скрипт. достаточно просто . script.sh даже если в path ничего не прописано.Это особенность шелла, который трактует "." как внутреннюю команду, а ее аргумент как имя файла, который никакого отношения к PATH (и другим переменным окружения) не имеет
Точно так же как "cat filename" не требует указания текущего каталога для filename
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38786560
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

ну да, спасибо.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38816059
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
Принципиальное отличие . от ./ в том, что просто . можно выполнить файл даже без права на выполнение (+x) для файла.

авторbash-2.05$ ls -l | grep orae
-rw-r--r-- 1 oracle dba 808 Jan 20 2011 oraenv10g
-rw------- 1 oracle dba 1434 Dec 14 2010 oraenv11g
-rw-r--r-- 1 oracle dba 1003 Jan 21 2011 oraenvagent
-rw-r--r-- 1 oracle dba 1000 Jan 21 2011 oraenvoem
bash-2.05$ . oraenv10g
bash-2.05$
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38816063
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.,
спасибо! хорошее замечание.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38816255
Мутаген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Принципиальное отличие . от ./ в том, что просто . можно выполнить файл даже без права на выполнение (+x) для файла.

Это не так, принципиальная разница не в этом.

./blah исполнит файл (exec и всё такое), а . blah будет читаться шеллом и интерпретироваться им. Практическую разницу можно наблюдать при помощи команды . /bin/ls - будет много бинарного мусора (шелл нужно попроще, bash просто не будет исполнять), а при интерпретации через . файла со строкой exit текущая шелл просто закроется.
...
Рейтинг: 0 / 0
Почему не устанавливается переменная окружения?
    #38816297
mr_virtus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутаген,
спасибо за ответ. правда не очень понял. было бы интересно, если б вы пояснили :)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Почему не устанавливается переменная окружения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]