Nie zgadzając się z innymi odpowiedziami, istnieje powszechna konwencja używania .sh
rozszerzenia dla skryptów powłoki - ale nie jest to przydatna konwencja. Lepiej w ogóle nie używać rozszerzenia. Zaleta możliwości stwierdzenia, że foo.sh
jest to skrypt powłoki ze względu na jego nazwę, jest minimalna, a płacisz za to utratą elastyczności.
Aby skrypt bash był wykonywalny, musi mieć na górze linię shebang :
#!/bin/bash
i użyj chmod +x
polecenia, aby system rozpoznał go jako plik wykonywalny. Następnie należy go zainstalować w jednym z katalogów wymienionych w pliku $PATH
. Jeśli skrypt zostanie wywołany foo
, możesz go uruchomić z wiersza poleceń powłoki, wpisując foo
. Lub jeśli znajduje się w bieżącym katalogu (typowym dla skryptów tymczasowych), możesz wpisać ./foo
.
Ani powłoka, ani system operacyjny nie zwracają uwagi na rozszerzenie nazwy pliku. To tylko część nazwy. A nie dając mu specjalnego rozszerzenia, zapewniasz, że każdy (użytkownik lub inny skrypt), który go używa, nie musi dbać o to, jak został zaimplementowany, czy jest to skrypt powłoki (sh, bash, csh, czy cokolwiek) , skrypt Perla, Pythona lub Awk albo binarny plik wykonywalny. System jest specjalnie zaprojektowany, aby można było wywołać skrypt zinterpretowany lub plik wykonywalny binarny bez znajomości lub dbałości o sposób jego zaimplementowania.
Systemy podobne do UNIX zaczynały od czysto tekstowego interfejsu wiersza poleceń. GUI, takie jak KDE i Gnome, zostały dodane później. W systemie graficznym z interfejsem użytkownika zazwyczaj można uruchomić program (ponownie, niezależnie od tego, czy jest to skrypt, czy binarny plik wykonywalny), na przykład dwukrotnie klikając ikonę, która się do niego odnosi. Zwykle powoduje to odrzucenie wszystkich danych wyjściowych, które program może wydrukować, i nie pozwala na przekazywanie argumentów wiersza poleceń; jest znacznie mniej elastyczny niż uruchamianie go z zachęty powłoki. Ale w przypadku niektórych programów (głównie klientów GUI) może to być wygodniejsze.
Skryptów powłoki najlepiej się nauczyć z wiersza poleceń, a nie z graficznego interfejsu użytkownika.
(Niektóre narzędzia zrobić zwrócić uwagę na rozszerzeniach Na przykład kompilatory zazwyczaj używają rozszerzenia w celu określenia języka kod jest napisany w. .c
Dla C .cpp
. Dla C ++, itp Konwencja ta nie ma zastosowania do plików wykonywalnych)
Należy pamiętać, że UNIX (i systemy podobne do UNIX) to nie Windows. MS Windows na ogół używa rozszerzenia pliku, aby określić, jak go otworzyć / wykonać. Binarne pliki wykonywalne muszą mieć .exe
rozszerzenie. Jeśli masz powłokę podobną do systemu UNIX zainstalowaną w systemie Windows, możesz skonfigurować system Windows tak, aby rozpoznawał .sh
rozszerzenie jako skrypt powłoki i używać powłoki do otwierania go; Windows nie ma #!
konwencji.
bash myscript