Інший спосіб - зателефонувати інтерпретатору та передати шлях до сценарію до нього:
/bin/sh /path/to/script
Точка та джерело рівнозначні. (EDIT: ні, вони не такі: як вказує KeithB в коментарі до іншої відповіді, "." Працює лише в оболонках, пов'язаних з bash, де "source" працює як в оболонках bash, так і в csh.) Він виконує сценарій у -place (наче ви скопіювали та вставили скрипт прямо туди). Це означає, що будь-які функції та не локальні змінні в сценарії залишаються. Це також означає, що якщо скрипт містить компакт-диск у каталог, ви все одно будете там, коли це буде зроблено.
Інші способи запуску скрипту запуститимуть його у власній підпакеті. Змінні в сценарії ще не існують, коли це зроблено. Якщо скрипт змінив каталоги, він не впливає на середовище виклику.
/ шлях / до / скрипт та / bin / sh сценарій дещо відрізняються. Зазвичай сценарій на початку має "шебанг", який виглядає приблизно так:
#! /bin/bash
Це шлях до інтерпретатора сценарію. Якщо він визначає іншого інтерпретатора, ніж ви, виконуючи його, то він може поводитись інакше (або може не працювати взагалі).
Наприклад, сценарії Perl та сценарії Ruby починаються з (відповідно):
#! /bin/perl
і
#! /bin/ruby
Якщо ви виконаєте один із цих сценаріїв, запустивши /bin/sh script
, вони взагалі не працюватимуть.
Ubuntu насправді не використовує оболонку bash, але дуже схожу з назвою dash. Сценарії, які вимагають bash, можуть спрацьовувати трохи неправильно, коли їх викликають, /bin/sh script
тому що ви тільки що викликали скрипт bash за допомогою інтерпретатора тире.
Ще одна невелика різниця між викликом сценарію безпосередньо та передачею трактування сценарію інтерпретатору полягає в тому, що скрипт повинен бути позначений виконуваним, щоб запустити його безпосередньо, але не запускати його, передаючи шлях інтерпретатору.
Ще одна незначна зміна: ви можете приєднати будь-який із цих способів виконання сценарію з eval, так що ви можете мати
eval sh script
eval script
eval . script
і так далі. Це насправді нічого не змінює, але я подумав, що я включу це для ґрунтовності.