В Unix говорят то, что различие между сценарием оболочки и исполняемым файлом?

rsync является, вероятно, лучшим инструментом для этого. Существует много опций на этой команде так страница справочника чтения. Я думаю, что Вы хотите - опция контрольной суммы или - игнорировать-времена

9
13.04.2017, 15:36
3 ответа

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

Сценарий оболочки является определенным типом исполняемого файла, который предназначается, чтобы быть интерпретированным оболочкой с помощью #! директива для определения интерпретатора.

12
27.01.2020, 20:04

Сценарий является файлом который:

  • человекочитаемо (по крайней мере, обоснованно обученному человеку, т.е. файл состоит из печатаемых символов); и
  • понят под интерпретатором как инструкции, описывающие поведение программы.

Сценарий оболочки является сценарием, интерпретатор которого является оболочкой. В мире Unix “оболочка” относится к семейству оболочек, которые напоминают Оболочку Bourne; современный такие оболочки (пепел, удар, ksh, zsh, …) соответствуют стандарту оболочки POSIX. В более общем плане слово “оболочка” может включать другие интерпретаторы команд, такие как csh, tcsh, рыба, …


Исполняемый файл является любым файлом, который может быть выполнен. Чтобы быть эффективно исполняемым файлом, файл должен иметь два свойства:

  • У пользователя должно быть разрешение выполнить его. Это видно с командой ls -l: x символ должен присутствовать в столбце разрешения.
  • Формат файла должен быть тем, который система распознает как исполняемый файл. Форматы исполняемых файлов могут быть разделены на несколько категорий:

    • Собственные исполняемые файлы, которые состоят из машинного кода, организованного согласно двоичному исполняемому расположению операционной системы. Самые современные системы Unix используют формат ELF для своих собственных исполняемых файлов.
    • Сценарии. Исполняемый сценарий является файлом, начинается со строки хижины, состоя из этих двух символов #! сопровождаемый путем к файлу. Для выполнения такого файла ядро выполняет программу интерпретатора и передает его путь к сценарию как аргумент.
    • Возможно другие форматы в зависимости от системы. Например, Linux может зарегистрировать произвольные форматы файлов через binfmt_misc средство. Это позволяет файлам байт-кода Java выполняться через зарегистрированную JVM, исполняемые файлы Windows, которые будут выполняться через Вино и т.д.

Обратите внимание, что быть исполняемым файлом зависит от системы. Например, двоичный файл amd64 Linux является исполняемым файлом в системе amd64 Linux, но не в 32-разрядной системе. Двоичный файл для Android не является исполняемым файлом на нормальной установке Linux. Исполняемый файл Windows является только исполняемым файлом на Linux, если Вино присутствует. Сценарий, который начинается #!/usr/local/bin/ruby только исполняемый файл, если существует программа, расположенная в /usr/local/bin/ruby.


Сценарий оболочки обычно является исполняемым файлом. Но это может быть неисполняемый файл, если у Вас нет разрешения выполнить его. Можно было все еще интерпретировать его путем передачи его явно интерпретатору (например. bash /path/to/script) — “имеют интерпретируемый”, необычный способ сказать, “выполняются”.

12
27.01.2020, 20:04

сценарий оболочки:

Сценарий оболочки является рядом команды, которая будет интерпретироваться оболочкой (Обычно sh или оболочка sh-compatible, иногда другой.)

Название сценария, но не должен, может закончиться в ".sh" или ".bash" или ".csh" и т.д. (предоставление подсказки относительно оболочки, это должно быть запущено).

Для ясности я приму: то, что название сценария script, и оболочка, в которой это должно быть запущено, bash.

Типичный способ запустить его в оболочке затем был бы: bash /absolute/path/to/the/script или bash ./relative/path/to/the/script. Тем путем это не должно иметь исполняемого набора битов, поскольку это только читается ударом, который затем выполняет содержание.

Это может также быть установлено +x (исполняемый файл), чтобы позволить запускать его непосредственно от Вашей текущей сессии оболочки с:/absolute/path/to/the/script (или./relative/path/to/the/script).Остерегайтесь: по умолчанию, при запуске тот путь он запускается через оболочку, которую Вы ввели, или через оболочку posix (поведение зависимо от операционной системы), таким образом, это не могла возможно быть оболочка, он, как предполагается, выполняется. Вот почему Вы можете (и если) указывают как первая строка сценария: #!/path/to/good/shell, который указывает к Вашей ОС, что тот сценарий должен действительно быть запущен/path/to/good/shell вместо этого.

исполняемый файл:

Исполняемый файл является файлом, который имеет "x" набор битов для пользователя (пользователей) / группа (группы), которой он, как предполагается, запускается. Это может обычно быть "двоичный файл" или сценарий.

Подсказка: file /some/file может сказать Вам больше о содержании файла. Попробовать file /usr/bin/bash или file /etc/profile видеть некоторые примеры.

2
27.01.2020, 20:04
  • 1
    , Ваш оператор о сценариях без хижины, выполняемых Вашей текущей оболочкой, является неправильным. Поведение зависимо от операционной системы. Обычно или оболочка POSIX или Ваша оболочка входа в систему используются. –  jlliagre 11.12.2012, 08:38
  • 2
    Спасибо за эту точность. Я отредактирую свой ответ для добавления комментария. –  Olivier Dulac 11.12.2012, 15:16

Теги

Похожие вопросы