Jaka jest różnica między rozszerzeniami plików .command, .tool i .sh?

22

Widziałem kilka pytań na temat wykonywania skryptów wiersza poleceń? Widziałem, że wspomniano rozszerzenia .command i .tool. Zawsze używałem .sh. Jaka jest różnica między tymi różnymi skryptami? Czy niektóre rozszerzenia pozwalają na różne polecenia?

daviesgeek
źródło

Odpowiedzi:

15
  • .command - (skrypt powłoki terminala) W szczególności wiąże skrypt powłoki z terminalem. Czasami nazywany „plikiem terminala”.
  • .tool - (skrypt powłoki terminalu) To samo co rozszerzenie pliku „.command”.
  • .sh - (Shell Script) Podstawowy skrypt powłoki powiązany z Xcode 4.1.

Programowo, jestem pewien, że różnica między dwoma pierwszymi (.command vs. .tool) jest subtelna, podczas gdy trzeci jest zasadniczo prostym, domyślnym skryptem powłoki. I faktycznie wiąże się z Xcode 4.1.

wprowadź opis zdjęcia tutaj


źródło
5
„… Jestem pewien, że różnica między dwoma pierwszymi (.command vs. .tool) jest subtelna…” W rzeczywistości różnice nie istnieją :-) Terminal traktuje je identycznie. Dwa rozszerzenia plików odwzorowują dokładnie ten sam typ pliku w Info.plist terminalu, a Terminal nie próbuje wykryć, które rozszerzenie zostało dostarczone. Ponadto oprócz tego, że posiadanie różnych rozszerzeń oznacza, że ​​mogą one mieć różne domyślne aplikacje, zawartość wszystkich trzech typów plików jest taka sama. Wszystkie są tylko skryptami powłoki.
Chris Page
2

Uważam, że pliki .sh są domyślnie „własnością” Xcode, więc jeśli klikniesz jeden z nich dwukrotnie, otworzy się on w Xcode zamiast wykonać.

Pliki .command i .tool są domyślnie własnością terminalu, więc dwukrotne kliknięcie jednego z nich spowoduje otwarcie i uruchomienie w terminalu.

Nie znam żadnych innych różnic między nimi.

Ja również użyłem .sh do skryptów powłoki, ale ostatnio przestałem, ponieważ zacząłem pisać moje skrypty powłoki w Zsh zamiast sh, i mylące było próbowanie zapamiętania, czy pewne polecenie zakończyło się na .sh lub .zsh, więc w końcu po prostu umieściłem je wszystkie w ~ / bin / i upewniłem się, że są one wykonywalne, i nie używam na nich rozszerzeń plików.

TJ Luoma
źródło
W rzeczywistości nie otwierają się w Xcode. I mam Xcode zainstalowany na moim komputerze.
daviesgeek
1
Pliki .sh można otwierać w Xcode (kliknięcie kontrolne »„ otwórz za pomocą ”pokaże Xcode jako opcję), ale to, w której aplikacji się otworzą, będzie zależeć od tego, która aplikacja zostanie zainstalowana jako pierwsza i„ zgłosi ”rozszerzenie. Jeśli inna aplikacja została zainstalowana przed Xcode i twierdzi, że .sh, nie będzie wyświetlana jako otwierająca się z Xcode.
TJ Luoma,
1
Masz rację: poza tym, że różne rozszerzenia plików pozwalają im mieć różne domyślne aplikacje, zawartość i obsługa tych plików jest taka sama. Wszystkie są tylko plikami skryptów powłoki.
Chris Page