В чем разница между выполнением скрипта (например, / some / script) с помощью source /some/script
и . /some/script
в Bash?
147
source
и .
являются синонимами в Bash .
Если вы хотите убедиться, что команды являются просто синонимами и ничего более, посмотрите на исходный код , скажем, для версии 4.3, и изучите файл builtins/source.def
. Вы увидите , что оба встроенных команд, source
и .
использовать ту же самую функцию: source_builtin
.
.
традиционная исходная команда, унаследованная от древней оболочки Борна.source
это просто встроенная команда bash, которая делает то же самое, что и.
, предположительно, потому что она более читабельна (.
один может быть трудно обнаружить маленьким шрифтом). Вы увидитеhelp source
иhelp .
показывает ту же информацию.man bash
а затем выполните поиск,source
вы увидите, чтоsource filename [arguments]
это синоним. filename [arguments]
..
является синонимомsource
в bash, но не в POSIX sh, так что вы должны использовать,.
если ваш скрипт запускается / bin / sh. Обратите внимание, что bash утверждает, что работает как POSIX sh, когда вызывается как / bin / sh, но принимаетsource
без жалоб.Такое поведение меня укусило, например, скрипты, протестированные с использованием bash, так как / bin / sh не работают при запуске под ash.
источник
#!/bin/sh
вы никогда не должны предполагать, что оболочка поддерживает что-то кроме функций POSIX. pubs.opengroup.org/onlinepubs/9699919799/utilities/…