Я видел команду типа " . 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
без косой черты), но файл должен быть только для чтения; он не должен быть исполняемым.