Вкл.
bash script1
вы выполняете bash
(тот, который требует разрешения на выполнение) для чтения и обработки script1
(который требует разрешения на чтение).
Вкл.
source script1
вы говорите текущему bash
прочитать файл и обработать его, как если бы он был набран на текущей оболочке, поэтому текущий bash
читает сценарий (разрешение на чтение) и выполняет каждую строку.
Наконец, на
./script1
вы говорите bash
, чтобы попытаться запустить файл с именем ./script1
, поэтому он проверяет, является ли он исполняемым (разрешение на выполнение на ./script1
)и передает этот файл ядру для выполнения.Ядро открывает файл и действует по мере необходимости (если оно имеет строку shebang , оно использует все, что ему дано, если оно находит, что это объект ELF, оно подготавливает двоичный файл в памяти ...).
Относительно PATH
, проверьте некоторую документацию и возвращайтесь с конкретными сомнениями, если таковые имеются.