Whys есть дополнительная точка в начале некоторой команды, которую я должен выполнить

Я загрузил установочный пакет сервера weblogic и в README, чтобы выполнить эту команду:

Linux/Mac $ . ./configure.sh 

Я не в первый раз вижу это. Почему в начале команды есть дополнительная точка? Когда я делаю только ./configure.sh , результат тот же

Точка ( . ) – это обозначение для выполнения команд из файла, которое дано в качестве аргумента для точки. Содержимое этого файла, например ./configure.sh , выполняется в текущей оболочке. Команда dot возникла с помощью оболочки Bourne и доступна в других, например, в Bash.

выдержка из справочной страницы Баша

  . filename [arguments] source filename [arguments] Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the posi‐ tional parameters when filename is executed. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no commands are executed), and false if filename is not found or cannot be read. 

ПРИМЕЧАНИЕ. Другие оболочки, такие как csh имеют аналогичный source команд, а многие из более современных разновидностей поддерживают как точечную нотацию, так и команду source . Баш фактически поддерживает оба.

пример

Вот пример, где мы будем устанавливать переменную $SOMEVAR в нашей текущей оболочке путем поиска файла с указанной переменной.

Вот пример файла:

 $ cat test.sh SOMEVAR="hi" 

Сначала мы проверяем, чтобы переменная $SOMEVAR еще не была установлена ​​в текущей оболочке.

 $ echo $SOMEVAR $ 

Теперь мы исправим его и подтвердим, что он теперь установлен:

 $ . ./test.sh $ echo $SOMEVAR hi 

портативность

Спасибо @ChrisDown за это. Точка ( . ) Указана как часть POSIX и поэтому переносима, тогда как source команды – нет. См. Здесь в разделе «Основы базы данных Open Group». Документация к выпуску 7 раздела: «2. Командный язык оболочки». В частности, этот раздел.

выдержка

ИМЯ

dot – выполнять команды в текущей среде

СИНТАКСИС

, файл

ОПИСАНИЕ

Оболочка должна выполнять команды из файла в текущей среде.

Если файл не содержит a, оболочка должна использовать путь поиска, указанный PATH, чтобы найти каталог, содержащий файл. Однако, в отличие от обычного поиска команд, поиск файла с помощью точечной утилиты не должен выполняться. Если считываемый файл не найден, неинтерактивная оболочка прерывается; интерактивная оболочка должна записать диагностическое сообщение в стандартную ошибку, но это условие не должно рассматриваться как синтаксическая ошибка.