В чем разница между выполнением скрипта, подобного этому:
./test.sh
и выполнить скрипт, как это:
. test.sh
?
Я попробовал простой двухстрочный скрипт, чтобы посмотреть, смогу ли я найти разницу:
#!/bin/bash
ls
Но оба . test.sh
и ./test.sh
вернули одну и ту же информацию.
test.sh
это не то же самое, что ./test.sh
(первое вызывает PATH
поиск), так . test.sh
и они . ./test.sh
различны (первое вызывает PATH
поиск). Кажется, что многие оболочки неявно включаются .
в конце PATH
при .
поиске пути, но это поведение не является стандартным. Таким образом, точнее сравнивать test.sh
против . test.sh
и ./test.sh
против . ./test.sh
.