Я видел команду типа " . test.sh " в некотором исходном коде оболочки, но я не знаю, что она делает. Итак, я попробовал это.
И этот файл .sh выполняется.
Однако я не понимаю, как работает " . " Вы можете объяснить?
Я видел команду типа " . test.sh " в некотором исходном коде оболочки, но я не знаю, что она делает. Итак, я попробовал это.
И этот файл .sh выполняется.
Однако я не понимаю, как работает " . " Вы можете объяснить?
. Команда (которая имеет синоним 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 без косой черты), но файл должен быть только для чтения; он не должен быть исполняемым.