Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: задать переменную *nix
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Не знаю
----- PostgreSQL DBA
EuGen
Отправлено: 12 Июля, 2013 - 12:55:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Мелкий
"." перед командой - это не область видимости. Точнее, это можно сравнить с областью видимости только если исполнение идёт из самой командной строки. DlTA
"." - это подключение кода. Работает так:
* Если выполняется непосредственно из командной строки, то исполняет скрипт
* Внутри другого скрипта, загружает сам скрипт (тот, что после точки).
Эффект - такой же, как у директивы #include для программ C.
Поэтому ". bash" - не имеет смысла, ведь "bash" не является верным путём к исходному коду (а если бы и являлся, то это - бинарный файл, который не имеет ничего общего с shell-скриптом).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 12 Июля, 2013 - 13:08:00
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DlTA
Так как речь идёт о запуске через командную строку, то "." попытается исполнить скрипт "cat". В зависимости от системы, ошибка может быть - либо не найден файл, либо, что скорее всего - то, что файл является бинарным (так как альяс "cat" всё же распознается системой).
На практическом примере:
- в последнем случае система попыталась подключить файл "cat", обнаружила, что это альяс для /usr/bin/cat - попыталась подключить его (внимание - подключить как sh-скрипт) - и, разумеется, потерпела неудачу, ведь /usr/bin/cat - это бинарный файл, а не файл с текстом sh-скрипта.
Для ещё большей понятности:
- я создал исполняемый файл /usr/bin/sometest, в который поместил текстовый sh-скрипт, который исполняет cat для первого аргумента командной строки. Такой скрипт, в отличие от cat, будет успешно подключён (так как является текстом) и исполнен (так как является правильным sh-скриптом)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.