Jak uruchomić plik .sh lub .command w terminalu

87

Zawsze chciałem móc uruchomić skrypt pobrany bezpośrednio z Findera, ale podwójne kliknięcie pliku nie działa.

Maximus
źródło

Odpowiedzi:

103

Otwórz Terminal, wpisz sh /path/to/filei naciśnij enter.

Szybsze jest wpisanie shi spacja, a następnie przeciągnięcie pliku do okna i zwolnienie ikony w dowolnym miejscu okna.

Maximus
źródło
3
Jak myślisz, co się stanie, jeśli skrypt powłoki zostanie napisany w składni innej powłoki, takiej jak tcsh, zsh lub ksh? Przyrostek shoznacza, że ​​skrypt powłoki nie „uruchamia skryptu w tej powłoce”.
fd0
3
@ fd0 Linia shebang zajmie się tym.
user14492,
4
@ user14492- Gdy wywołujesz skrypt powłoki, ponieważ shell shell_scriptlinia shebang jest ignorowana. Powłoka czyta pierwszy wiersz jako komentarz.
fd0
@ fd0, nie rozumiem. Czym sh /path/to/fileróżni się semantycznie od alternatywy /path/to/file.sh?
Pacerier
2
@ Pacerier - W pierwszym formularzu wywołujący użytkownik musi być w stanie odczytać plik i wybrać, który tłumacz go odczyta. W drugim formularzu uprawnienia do pliku muszą być odczytane i wykonane dla wywołującego użytkownika, a interpreter jest określony przez hash bang w pierwszym wierszu skryptu. W obu przypadkach jądro nie interpretuje przyrostka w pliku.
fd0,
12

Możesz też zrobić

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

który również uruchomi plik wykonywalny z określoną powłoką (jeśli jest określony w shebang #!/bin/(shell)

być może może być
źródło
1
W pytaniu jest napisane: „uruchom skrypt, który pobrałem online”. Pliki pobierane z Internetu zwykle mają uprawnienia ustawione na 644.
nohillside
@patrix Myślę, że to nie tylko internet, ale każdy plik skopiowany z innego systemu plików do twojego z powodu domyślnej maski na twoim koncie.
rwenz3l
8
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

edytuj ~/.bash_profilei dodaj następujący wiersz:

alias myfile=./myfile.sh

wykonaj następujący wiersz polecenia:

source ~/.bash_profile

wtedy będziesz mógł uruchomić swój plik jako program

$ myfile

Reza Farshi
źródło
w Ubuntu każdy skrypt na twojej ścieżce może być wykonany tak długo, jak masz #~/bin/sh, podczas gdy w OSXskrypcie powinien mieć .shrozszerzenie i aliasdla każdego z nich. : -O
Fabrizio Bertoglio
6

Wykonaj następujące kroki, aby uruchomić pliki skryptów:

  1. Kliknij plik .sh prawym przyciskiem myszy.

  2. Najedź kursorem na Otwórz za pomocą .

  3. Wybierz inne ... .

  4. Powinieneś być w folderze Aplikacje . Otwórz folder Narzędzia i wybierz Terminal.app.

  5. Jeśli nie możesz wybrać Terminal.app, zmień włączone aplikacje z Zalecanych aplikacji na Wszystkie aplikacje . Znajduje się na dole okna.

  6. Jeśli chcesz otworzyć każdy .shplik za pomocą Terminal.app, zaznacz opcję Zawsze otwieraj za pomocą .

  7. Naciśnij przycisk Otwórz w prawym dolnym rogu okna.

stwykd
źródło
3

Powodem, dla którego nie działa po pobraniu jest to, że uprawnienia do plików na to nie pozwalają. Aby włączyć uprawnienia do wykonywania, otwórz Terminal i wpisz chmod 755 /path/to/script. Zamiast wpisywać pełną ścieżkę, możesz przeciągnąć skrypt do okna Terminal z Findera. Następnie, aby wykonać, wystarczy wejść /path/to/script. Ponownie możesz przeciągnąć i upuścić plik w oknie terminala. Ta składnia powinna uruchomić skrypt przy użyciu poprawnej powłoki zdefiniowanej w pierwszym wierszu skryptu.

Elliott
źródło
Mój plik .sh otwiera się w edytorze tekstów, w którym utworzyłem plik. Jak mogę zamiast tego otworzyć go w terminalu? Ustawiłem odpowiednie uprawnienia.
Bart
@bart musisz dodać rozszerzenie .command do bezpośredniego wykonywania skryptu w wyszukiwarce.
rwenz3l