Я видел команду типа " . test.sh " в некотором исходном коде оболочки, но я не знаю, что она делает. Итак, я попробовал это. И этот файл .sh выполняется.

Однако я не понимаю, как работает " . " Вы можете объяснить?

2 ответа2

4

. Команда (которая имеет синоним source в bash , но отсутствует в большинстве других производных оболочки Bourne) читает указанный файл как часть текущей оболочки.

Рассматривать:

$ cat test.sh
export ENVVAR="Welcome"
echo $ENVVAR
$ echo $ENVVAR

$ test.sh
Welcome
$ echo $ENVVAR

$ . test.sh
Welcome
$ echo $ENVVAR
Welcome
$

NB: чит 1: я предполагаю, что test.sh - исполняемый файл. Чит 2: Я предполагаю, что test.sh находится в каталоге на $PATH .

Это означает, что переменные окружения, установленные в test.sh влияют на текущую оболочку. Напротив, выполнение команды без . не влияет на среду текущей оболочки. . механизм используется, например, при чтении .profile и связанных файлов.

Обратите внимание, что . ищет в PATH простые имена (например, test.sh без косой черты), но файл должен быть только для чтения; он не должен быть исполняемым.

3

Это сокращение для этого, не более того:

source test.sh

http://ss64.com/bash/period.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .