Вопрос В чем разница между «источником» и «.»?


В чем разница между выполнением скрипта (например, / some / script) с помощью source /some/script а также . /some/script в Баше?


136
2018-02-09 17:18


происхождения




ответы:


source а также . являются синонимами в удар,

Для тех, кто хотел бы проверить, что команды являются просто синонимами и не более того, посмотрите на исходный код, скажем, для версии 4.3 и изучить файл builtins/source.def, Вы прочтете, что обе встроенные команды, source а также ., используйте ту же самую функцию: source_builtin,


123
2018-02-09 17:26



где это определено? Я имею в виду. псевдоним для источника или это что-то еще? - binW
точно такая же вещь
@binW: . является традиционной исходной командой, унаследованной от древней раковины борна. source это просто встроенный bash, который делает то же самое, что и ., по-видимому, потому что это более читаемо ( . один может быть трудно обнаружить с небольшим шрифтом). Вот увидишь help source а также help . показывает ту же информацию. - geirha
@binW: Если вы посмотрите man bash и затем выполните поиск source вы увидите, что source filename [arguments] является синонимом . filename [arguments], - Matthew Rankin
Это фактически противоречит тому, что я вижу в этом вопросе: askubuntu.com/questions/182012/... - ysap


. является синонимом source в bash, но не в POSIX sh, поэтому вы должны использовать . если ваш скрипт запущен / bin / sh. Обратите внимание, что bash утверждает, что работает как POSIX sh при вызове как / bin / sh, но принимает source без жалобы.

Это поведение укусило меня, скрипты, проверенные с помощью bash as / bin / sh fail при запуске под зоной, например.


41
2018-02-09 20:42



POSIX не ограничивает оболочку. POSIX просто говорит; оболочка должна поддерживать по крайней мере эту и эту функцию. Таким образом, оболочка POSIX может реализовать дополнительные функции, если реализованы те, которые описаны в POSIX. Когда shebang говорит #!/bin/sh вы никогда не должны предполагать, что оболочка поддерживает все, кроме функций POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/... - geirha
На вас может повлиять порядок поиска имен: unix.stackexchange.com/q/17815/8250 - Lekensteyn
Этот ответ помог мне, так как sh часто используется в cron. - dfrankow