В оболочке Linux я видел команду, начинающуюся с "./", например
$ ./example
Но тогда я также видел подобную команду, как $. example.sh
У меня вопрос, они имеют одинаковую функцию?
В оболочке Linux я видел команду, начинающуюся с "./", например
$ ./example
Но тогда я также видел подобную команду, как $. example.sh
У меня вопрос, они имеют одинаковую функцию?
./example.sh
выполнит example.sh
в текущем каталоге.
. example.sh
будет источником example.sh
.
Хотя они могут выглядеть одинаково, обе команды не связаны между собой.
./example
выполнит двоичный или исполняемый скрипт оболочки в текущей папке. Если это сценарий оболочки, он будет выполняться в вложенной оболочке.
. example
идентично
source example
который будет "источником" файла, что означает его выполнение в контексте текущей оболочки. Это означает, что если в этом файле есть объявления переменных или функций, они будут доступны в текущей оболочке после source
команды. Также переменные манипуляции или что-то будет происходить в текущей оболочке. Это как если бы вы печатали содержимое файла построчно вручную в терминале.