Не погоджуючись з іншими відповідями, існує загальноприйнята домовленість про використання .shрозширення для сценаріїв оболонки - але це не корисна умова. Краще взагалі не використовувати розширення. Перевага можливості сказати, що foo.shце сценарій оболонки, через його назву мінімальна, і ви платите за це з втратою гнучкості.
Щоб зробити скрипт bash виконуваним, він повинен мати рядок shebang вгорі:
#!/bin/bash
і використовуйте chmod +xкоманду, щоб система розпізнала її як виконуваний файл. Потім його потрібно встановити в одному з каталогів, перелічених у вашому $PATH. Якщо скрипт викликаний foo, ви можете виконати його з підказки оболонки, набравши foo. Або якщо він знаходиться у поточному каталозі (загальноприйнятому для тимчасових скриптів), ви можете ввести ./foo.
Ні оболонка, ні операційна система не звертають уваги на частину розширення імені файлу. Це лише частина назви. І, не надаючи йому спеціального розширення, ви гарантуєте, що будь-кому (або користувачеві, або іншому сценарію), який його використовує, не буде байдуже, як він був реалізований, будь то скрипт оболонки (sh, bash, csh або що завгодно) , сценарій Perl, Python або Awk, або двійковий виконуваний файл. Система спеціально розроблена таким чином, що можна інтерпретувати сценарій або двійковий виконуваний файл, не знаючи і не піклуючись про те, як це реалізовано.
Системи, подібні до UNIX, розпочали роботу з чисто текстовим інтерфейсом командного рядка. Графічні інтерфейси, такі як KDE та Gnome, були додані пізніше. У настільній системі графічного інтерфейсу зазвичай можна запустити програму (знову ж таки, будь то скрипт чи двійковий виконуваний файл), наприклад, подвійним клацанням на піктограмі, яка на неї посилається. Зазвичай це відкидає будь-які вихідні дані, які програма може надрукувати, і не дозволяє передавати аргументи командного рядка; це набагато менш гнучко, ніж запуск з командного рядка. Але для деяких програм (переважно клієнтів з графічним інтерфейсом) це може бути зручніше.
Сценарії оболонок найкраще вивчити з командного рядка, а не з графічного інтерфейсу.
(Деякі інструменти роблять звернути увагу на розширення файлів , наприклад, компілятори зазвичай використовують розширення для визначення мови код написаний в :. .cДля C, .cpp. Для C ++, і т.д. Ця угода не відноситься до виконуваних файлів)
Майте на увазі, що UNIX (і UNIX-подібні системи) не є Windows. MS Windows зазвичай використовує розширення файлу, щоб визначити, як його відкрити / виконати. Бінарні виконувані файли повинні мати .exeрозширення. Якщо у вас під Windows встановлена оболонка, схожа на UNIX, ви можете налаштувати Windows на розпізнавання .shрозширення як сценарію оболонки та використовувати оболонку для його відкриття; Windows не має #!конвенції.
bash myscript