Не соглашаясь с другими ответами, существует общее соглашение об использовании .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