|
|
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Привет! Запускаю скрипт, в котором export ANT_HOME="$(cd ../..;pwd)" после это запускаю echo $ANT_HOME и там пусто. если писать echo $(cd ../..;pwd), то отображается путь к директории и сообщение: -bash: ../..: is a directory Почему через скрипт не устанавливается переменная? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:19 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
>Запускаю скрипт при запуске порождается новый дочерний процесс (интерпретатор (bash)) выполняет ваш скрипт, устанавливает там переменную ANT_HOME, затем умирает, вместе со всеми переменными. То что вы хотите делается так source мой_скрипт_который_устанавливает_переменные.sh или синоним source . (точка) (в баше) . мой_скрипт_который_устанавливает_переменные.sh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 11:58 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
ну и вообще вы фигню какую-то делаете, зачем ANT_HOME устанавливать, да еще и относительным путем и до кучи cd. Позвали сантехника удалять зубы через задний проход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 12:04 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис, спасибо. проблема была в запуске скрипта. запустил так . 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 12:56 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
mr_virtus. ./script.sh ? не знаю, возможно не в bash, а в других шелах, точка например тоже синоним source из баша, и в стандартном sh или в каком-нибудь ash не заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 13:03 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денис, понятно, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2014, 13:09 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Журавлев Денисmr_virtus. ./script.sh ? не знаю, возможно не в bash, а в других шелах, точка например тоже синоним source из баша, и в стандартном sh или в каком-нибудь ash не заработает.Скорее наоборот source -- это фишка первоначально только csh, а bash (да и zsh), как обычно, впихивает в себя все невпихуемое Для стандартного sh и ksh (ну и bash, zsh, конечно) юзается точка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 02:38 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
mr_virtus, точка запускает скрипт в данном экземпляре shell, а в случае запуска как команды - в новом экземпляре, и после его завершения значение переменной теряется. export делает переменную доступной для дочерних процессов, а не для родительского. и кроме всего этого, для использования вывода команды вообще то используют не двойные кавычки, а бэктик (обратный апостроф). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 08:52 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
mr_virtusя проверил, у меня этот случай, тем не менее . script.sh - отрабатывает нормально, то есть я не писал так . ./script.sh смешались в кучу кони, люди.. :) . script.sh верно, отработает. а если в PATH каталог со скриптом не включен, то script.sh (без source) не отработает, только ./script.sh т.е. явно должен указать текущий каталог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 08:58 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
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 ничего не прописано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 11:16 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, спасибо, автори кроме всего этого, для использования вывода команды вообще то используют не двойные кавычки, а бэктик (обратный апостроф). тем не менее export ANT_HOME="$(cd ../..;pwd)" отрабатывает и переменая устанавливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 11:20 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 11:20 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
mr_virtusто есть в gnu/linux получается не обязательно писать так . ./script.sh чтоб выполнился скрипт. достаточно просто . script.sh даже если в path ничего не прописано.Это особенность шелла, который трактует "." как внутреннюю команду, а ее аргумент как имя файла, который никакого отношения к PATH (и другим переменным окружения) не имеет Точно так же как "cat filename" не требует указания текущего каталога для filename ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 12:44 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, ну да, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2014, 12:49 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
Принципиальное отличие . от ./ в том, что просто . можно выполнить файл даже без права на выполнение (+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$ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 13:40 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
., спасибо! хорошее замечание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 13:43 |
|
||
|
Почему не устанавливается переменная окружения?
|
|||
|---|---|---|---|
|
#18+
.Принципиальное отличие . от ./ в том, что просто . можно выполнить файл даже без права на выполнение (+x) для файла. Это не так, принципиальная разница не в этом. ./blah исполнит файл (exec и всё такое), а . blah будет читаться шеллом и интерпретироваться им. Практическую разницу можно наблюдать при помощи команды . /bin/ls - будет много бинарного мусора (шелл нужно попроще, bash просто не будет исполнять), а при интерпретации через . файла со строкой exit текущая шелл просто закроется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2014, 15:51 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=38786433&tid=1482280]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 267ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...