Запуск исполняемых файлов без ./ или bash или source - PullRequest
1 голос
/ 26 сентября 2019

Я изучаю основы Bash и Linux.Чтобы выполнить скрипт, я мог бы набрать ...

bash script1

или

source script1

или

./script1

Первые два будут работать без chmod u+x ипоследний требует этого.

Насколько я понимаю, bash пытается запустить вещи в подоболочке, чтобы не испортить вещи.Когда я добавляю bash перед именем файла, оно выполняется в подоболочке.source - это просто способ указать компьютеру запустить его в текущей оболочке.Я не уверен, почему для этого не требуется разрешение на выполнение.

./ довольно просто.Однако я видел, как люди запускают сценарии без ./.Один сказал мне, что я могу сделать это, сделав что-нибудь с PATH.Я совершенно не понимаю эту вещь PATH.

Может кто-нибудь объяснить самым простым способом?

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

PATH является переменной среды.Это список, содержащий все каталоги, которые будут искать при вводе команды.Поэтому, если ваш PATH определен как PATH = / bin: / usr / bin, эти два каталога будут найдены, если вы переопределите его как export PATH =. /: $ PATH, он также добавит текущий каталог в список поиска.

1 голос
/ 26 сентября 2019

Вкл.

bash script1

вы выполняете bash (тот, который требует разрешения на выполнение) для чтения и обработки script1 (который требует разрешения на чтение).

Вкл.

source script1

вы говорите текущему bash прочитать файл и обработать его, как если бы он был набран на текущей оболочке, поэтому текущий bash читает сценарий (разрешение на чтение) и выполняет каждую строку.

Наконец, на

./script1

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

Относительно PATH, проверьте некоторую документацию и возвращайтесь с конкретными сомнениями, если таковые имеются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...