Попробуйте использовать man sh
или man bash
или man-страницу для любой оболочки, которую вы используете. (Может быть, man $SHELL
.)
Официально это называется не команда "точка", а команда source
. Поиск source
слова может быть полезным.
например, bash man page (поиск по "каждой встроенной команде"), и вы быстро найдете документацию.
Что касается объяснения использования, я могу сделать это прямо здесь. Я просто буду называть это source
командой, признавая, что ее можно сокращать до периода, когда вы используете несколько оболочек, а с некоторыми оболочками эта команда может потребоваться (поскольку точка может быть распознана, но весь source
слова целиком не может быть).
Если вы используете source
команду, ваша оболочка прочитает каждую строку из файла сценария и попытается выполнить ее. Вам нужно разрешение на чтение файла. (Неважно, есть ли у вас права на "выполнение".) Если вы изменяете переменную, это может повлиять на вашу текущую оболочку.
Если, с другой стороны, вы просто пытаетесь выполнить файл, то ваша оболочка попросит операционную систему позаботиться об этом запросе. Это потребует разрешения "выполнить". (В некоторых системах, таких как OpenBSD, для этого вам не понадобятся разрешения на "чтение". На других системах, включая многие варианты Unix, вы будете.) Возможно, файл должен начинаться с соответствующего заголовка (например, #!/bin/sh
), поэтому операционная система распознает это как файл сценария. Операционная система выполнит копию запрошенной оболочки и скажет этой оболочке запустить содержимое скрипта. Если среда оболочки изменяется (например, переменная получает новое значение, рабочий каталог изменяется (с помощью cd
), дескриптор файла перенаправляется (с помощью exec
) и т.д.), Это влияет только на вложенную оболочку, которая была вызван для сценария, и не может изменить среду в родительской оболочке, которая вызывала файл сценария.