Jak uruchomić skrypty .sh?


344

Ilekroć otwieram plik .sh, otwiera go w gedit zamiast w terminalu. Nie mogę znaleźć żadnej opcji podobnej do Kliknięcia prawym przyciskiem → Otwórz za pomocą → Inna aplikacja ... → Terminal .

Jak mogę otworzyć ten plik w terminalu?


Czy ten skrypt ma na celu ustawienie zmiennych env do dalszego wykorzystania?
— Rob

1
Nie powinieneś używać rozszerzeń skryptów. W pewnym momencie w przyszłości może się okazać, że inny język jest bardziej odpowiedni do wykonywania zadań, które wykonuje obecny skrypt. I wtedy masz problem. Czy zachowujesz starą nazwę z całkowicie mylącym rozszerzeniem, czy też zmieniasz jej nazwę, być może musisz edytować wiele miejsc, w których używasz skryptu?
— geirha

Nie potrzebujesz rozszerzenia pliku. Miło jest mieć, ale nie jest potrzebne. System operacyjny nie patrzy na rozszerzenie pliku. Patrzy na dane
— ActionParsnip

5
Meh, jeśli przepiszesz foo.sh w ruby, zawsze możesz użyć pliku .sh do uruchomieniaruby foo.rb
— glenn jackman

W Dolphin możesz nacisnąć F4 i otworzy się konsola
— Motte001 16.06.16

Odpowiedzi:


523

Zezwól na wykonanie skryptu:

chmod +x /path/to/yourscript.sh

Aby uruchomić skrypt:

/path/to/yourscript.sh

Ponieważ .odnosi się do bieżącego katalogu: jeśli yourscript.shznajduje się w bieżącym katalogu, możesz uprościć to do:

./yourscript.sh

13
+1 tylko odpowiedź, aby pokazać dodawanie uprawnień do wykonywania tylko w terminalu.
— Hailwood

83
Jeśli tak bash /path/to/yourscript.sh, to nie potrzebujeszchmod +x
— Aleksandr Levchuk

4
W rzeczywistości można użyć, . /path/to/yourscript.shjeśli skrypt musi skonfigurować niektóre zmienne środowiskowe.
— Rob

1
Nikt nie wspomina o tradycji: ./path/to/yourscript.sh(bez spacji po .)? Uważam, że jeden jest najprostszy i najłatwiejszy w użyciu ... Ale tak czy inaczej, oto moja alternatywa, która powinna zrobić prawie to samo, co ./zrobiłbym, chociaż nie rozumiem, dlaczego nie używałbyś ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... edytuj FILENAMEwedług własnych upodobań . Należy również pamiętać, że shzostanie użyty, jeśli nie ma alternatywy.
— MiJyn

88

Musisz zaznaczyć skrypty powłoki jako pliki wykonywalne, aby uruchomić je z menedżera plików:

  1. Kliknij .shplik prawym przyciskiem myszy i wybierz Właściwości :

    wprowadź opis zdjęcia tutaj

  2. Na karcie Uprawnienia zaznacz Zezwalaj na uruchamianie pliku jako programu :

    wprowadź opis zdjęcia tutaj

  3. Zamknij okno Właściwości i kliknij dwukrotnie plik. Pojawi się okno dialogowe z opcją uruchomienia skryptu w terminalu:

    wprowadź opis zdjęcia tutaj


10
To nie działa w Ubuntu 13.04. W każdym razie nadal otwiera się w gedit, nigdy nie prosi mnie o wykonanie. Edycja: Nvm, imjustmatthew odpowiada na to pytanie.
— mpen

Przed użyciem tego musimy zezwolić na uprawnienie do pliku przy użyciu chmod. chmod + x nazwa_pliku.sh lub chmod 755 nazwa_pliku.sh
— Arvind Rawat

Nie mam wyskakującego okienka! IDE jest otwarte od razu, a nie wyskakujące okienko
— Zielony

Dlaczego nie mogę znaleźć „uruchom w terminalu” nigdzie w moim interfejsie? (Ubuntu 18.04)
— Daniel Möller,

1
@ DanielMöller, oto odpowiedź na twoje pytanie. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
— Akhilesh Dhar Dubey

33

Otwórz terminal i przejdź do folderu, w którym .shznajduje się plik. Następnie wpisz:

sh <name of file>.sh

najlepszy sposób na otwarcie dowolnej aplikacji. Przejdź do katalogu .sh, a następnie otwórz go w wierszu polecenia. użyj sh <nazwa pliku jak pokazano powyżej> .sh, jeśli wymaga to uprawnień, użyj chmod + x /path/to/yourscript.sh lub kliknij prawym przyciskiem myszy i zmień uprawnienia do wszystkich
— Durgesh Kumar

24

Warunek wstępny

Zanim będziesz mógł uruchomić plik .sh, musisz go uruchomić:

  1. Kliknij plik prawym przyciskiem myszy
  2. Wybierz Właściwości
  3. Wybierz Uprawnienia
  4. Wybierz Zezwalaj na uruchamianie pliku jako programu

Ostrzeżenie

Upewnij się, że ufasz źródłu, z którego pochodzi plik. To może być wirus .

Bardzo prosty sposób

  1. Kliknij dwukrotnie plik
  2. Kliknij Uruchom w terminalu

To ma problem. Terminal zamknie się natychmiast i nie będzie widać wyjścia.

Prosty sposób

  1. Otwórz Aplikacje -> Akcesoria -> Terminal
  2. Przeciągnij i upuść plik .sh do terminala i naciśnij klawisz Enter

Sposób, w jaki robią to profesjonaliści

  1. Otwórz Aplikacje -> Akcesoria -> Terminal
  2. Znajdź, gdzie plik .sh

    • Użyj poleceń lsicd
    • lswyświetli listę plików i folderów w bieżącym folderze . Spróbuj: wpisz „ls” i naciśnij klawisz Enter.
    • Gdy zobaczysz folder, do którego chcesz przejść, uruchom cd, następnie spację, a następnie nazwę folderu
    • Jeśli cd ..przejdziesz do folderu, którego nie chciałeś, biegnij, aby przejść o jeden poziom wyżej
  3. Uruchom plik .sh

    • Gdy zobaczysz na przykład script1.shz lsuruchom to:

      ./script.sh

Dlaczego to skomplikowane?

Terminal ma bogaty zestaw potężnych narzędzi, które są dostępne po wpisaniu poleceń. Specjaliści zlokalizują plik .sh, wpisując lsi cd. Po znalezieniu się w odpowiednim bieżącym folderze możesz uruchomić skrypt w następujący sposób:

./script1.sh

lub możesz uruchomić i przekierować dane wyjściowe do pliku:

./script1.sh > out.txt

lub możesz filtrować dane wyjściowe pod kątem słów kluczowych (np. „jabłka”), a następnie przekierować do pliku:

./script1.sh | grep apples > ./only-apples

Istnieją tysiące rzeczy, które możesz zrobić w tym pliku, wpisując kilka poleceń.

Kolejny: możesz pobrać plik z Internetu za pomocą jednego prostego polecenia:

wget www.google.com/images/logos/ps_logo2.png

A następnie otwórz plik w ten sposób:

shotwell ps_logo2.png

6
Nie jestem pewien, że The way specjalistów zrobić to jest prawidłowe, to bardziej przypadek prosty sposób zaawansowany (dla kontroli produkcji) sposób
— Hailwood

Dobrze wiedzieć, że zrobiłem to tak, jak robią to profesjonaliści podczas pierwszego procesu. Myślałem, że to podstawowy sposób użytkownika.
— NelsonGon

19

W systemie Ubuntu 13.04 pliki wykonywalne otwarte w Nautilus są teraz domyślnie otwierane w gedit, zamiast monitować użytkownika o ich wykonanie. Aby włączyć klasyczne zachowanie, musisz dostosować preferencje:

Nautilus → menu Edycja → Preferencje → karta Zachowanie → Kliknij przycisk opcji obok Pytaj za każdym razem.


Osoba, która zadała pytanie, mówi o Ubuntu 10.10
— edwin

1
Dziękuję Ci!!! Nie wiem, dlaczego to zmienili, nie mogłem wymyślić, jak cokolwiek zrobić.
— mpen

1
To właściwa odpowiedź dla najnowszego systemu Ubuntus.
— gaRex

Jak dostać się do Nautilus w 15.10?
— Yaakov Ainspan

Począwszy od Ubuntu 18.04, możesz uzyskać dostęp do preferencji, otwierając katalog, a następnie klikając „Pliki -> Preferencje” na górnym pasku.
— tparker

7

Przejdź do katalogu, w którym .shznajduje się plik, używając cd. W tym przykładzie zapisałem mój shplik jako~/Desktop/shell_practice/test.sh

najpierw zrób, pwdaby dowiedzieć się, gdzie jesteś, a jeśli powróci /home/username(gdzie usernamejest twoja prawdziwa nazwa użytkownika), możesz uruchomić

cd Desktop/shell/practice

Jeśli wydajesz się być gdzieś indziej, możesz użyć ścieżki absolutnej

cd ~/Desktop/shell/practice

lub

cd $HOME/Desktop/shell/practice

lub nawet

cd /home/$USER/Desktop/shell/practice

to wszystkie sposoby na opisanie tego samego miejsca. Po dotarciu do lokalizacji skryptu wpisz

ls

Jeśli widzisz shplik na wyjściu, możesz użyć chmodgo, aby był wykonywalny. W moim przypadku pamiętaj, że nazwa pliku to test.sh, więc bym uruchomił

chmod u+x test.sh

Teraz, gdy jesteśmy w tym samym katalogu co skrypt, musimy określić w powłoce, że chcemy wykonać plik, podając jego lokalizację ./(bieżący katalog poprzedzony jest separatorem ścieżek, aby odróżnić go od nazwy pliku). Aby uruchomić mój plik, wpisałbym:

./test.sh

Jeśli skrypt został poprawnie napisany, będzie działał bez błędów ...

Oto przykład na żywo: Oto przykład na żywo



1
Wb, @ RuD3B0y, starałem się zachować najlepsze odpowiedzi dla noobów, bez treści high tech, jeśli masz jakieś zmiany, proszę.
— Egzorcysta,

4

2 główne kroki.

  1. w terminalu użyj gedit do napisania i zapisania skryptu z rozszerzeniem „.sh” na pulpicie. (ale można użyć dowolnego edytora tekstu)

  2. otwórz Nautilus i kliknij prawym przyciskiem myszy plik script.sh.

    • w obszarze właściwości zaznacz pole „zezwól na uruchamianie pliku ..”

    • w menu Nautilus kliknij plik, następnie preferencje, a następnie zachowanie

    • zaznacz „uruchamiaj wykonywalne pliki tekstowe po ich otwarciu”.

Teraz, po dwukrotnym kliknięciu pliku na pulpicie, powinien on zostać wykonany. nie ma potrzeby .lub./


3
  1. Kliknij .shplik prawym przyciskiem myszy i uczyń go wykonywalnym.

  2. Otwórz terminal ( Ctrl+ Alt+ T).

  3. Przeciągnij .shplik do okna terminala i patrz z podziwem.


1
Witamy w Ask Ubuntu! Zalecam edycję tej odpowiedzi, aby rozszerzyć ją o szczegółowe informacje na temat pierwszego kroku. (Zobacz także Jak napisać dobrą odpowiedź? Zawiera ogólne porady na temat tego, jakie rodzaje odpowiedzi są uważane za najcenniejsze na AskUbuntu.)
— David Foerster

3

Można to zrobić na kilka sposobów.

opcja 1

  1. W terminalu przejdź do katalogu, w którym znajduje się plik Bash cd(zmień katalog).

    Dawny. cd Downloads

  2. Biegać bash <filename>.sh

    Działa to również z plikami .run. Na tej stronie znajduje się przykład tego użycia przy aktualizacji Rhythmbox.

Opcja 2

  1. W terminalu przejdź do katalogu, w którym znajduje się plik bash.

  2. Biegać chmod +x <filename>.sh

  3. W Nautilus otwórz plik.


3

W przypadku Ubuntu 18.04 wprowadzono niewielką modyfikację, ponieważ nie pojawia się wyskakujące okno dialogowe.

Musisz więc:

Kliknij prawym przyciskiem myszy Pliki, wybierz Preferencje> Wybierz kartę Zachowanie> Zaznacz opcję „Zapytaj, co zrobić” w obszarze Plik wykonywalny.

Teraz, po dwukrotnym kliknięciu dowolnego pliku .sh, pojawi się wyskakujące okienko, w którym możesz wybrać opcję „uruchom w terminalu”, aby uruchomić plik .sh

wprowadź opis zdjęcia tutaj


2

W Ubuntu 16.04 jest to, jak otworzyć go w terminalu:

Idź do File Manager > Edit > Preferences > Behaviordo Executable Text Filesi wybierz Ask each time.

Problem polega na tym, że domyślnie jest ustawiony na View Executable Files when they are opened.


1

Jeśli umieścisz skrypt powłoki lub inny plik wykonywalny, który utworzysz w / usr / local / bin, zostanie on znaleziony i wykonany bez konieczności podawania ścieżki folderu w wierszu poleceń lub dodawania ./ do nazwy. Na przykład utworzyłem następujący prosty 3-wierszowy skrypt bash, aby wyświetlić UUID dysku:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Nazwałem plik uuid i umieściłem go w / usr / local / bin. W wierszu poleceń muszę tylko wpisać:

uuid

0

Cóż, ja też stanąłem przed tym samym problemem. Chciałem uruchomić plik .sh, który otworzył się za pomocą Gedit na CentOS 7. Więc oto co zrobiłem:

  1. Nawigowałem do ścieżki .shpliku, który chciałem wykonać.
  2. Otworzyłem terminal.
  3. Po prostu przeciągnąłem i upuściłem okno terminala, a ono automatycznie pobierało ten plik wraz ze ścieżką jako dane wejściowe.
  4. Naciśnij Enter i jesteś gotowy do pracy!

0

Problem, który znalazłem w kilku dystrybucjach, polega na tym, że ukryli opcję preferencji w Nautilusie, ale naprawa tego w Ubuntu i innych dystrybucjach za pomocą Gnome3 jest taka sama (dosłownie właśnie zrobiłem tę wersję Fedory i opublikowałem poprawkę, aby mi przypomnieć jak w przyszłości).

  1. zainstalować dconf-editor

    sudo apt-get install dconf-editor
  2. Uruchom dconf-editorużywając konta użytkownika, na którym chcesz to zrobić, tj. NIE root

    dconf-editor
  3. Przejdź do następującego schematu:

    org.gnome.nautilus.preferences

  4. Zmień domyślną opcję, aby domyślnie się nie otwierała:

    Znajdź executable-text-activationkliknij słowo displayi zmień naask

dzięki czemu będziesz mógł edytować, przeglądać lub uruchamiać plik w przyszłości


0

W Linuksie jestem noobem i właśnie miałem ten sam problem. Jeśli wszystko inne zawiedzie:

  1. Otwórz terminal
  2. Otwórz folder zawierający plik .sh
  3. Przeciągnij i upuść plik w oknie terminala
  4. Ścieżka pliku pojawia się w terminalu. Prasa Enter.
  5. Voila, Twój plik .sh jest uruchomiony.

-2

Możesz także użyć .sztuczek z sugestiami innych odpowiedzi.

Na przykład:

chmod +x filename.sh, zakładając, że już przeszedłeś do ścieżki do pliku, a następnie uruchom plik za pomocą dowolnej z następujących komend:

sh filename.sh

./filename.sh

. filename.sh

2
ostrzeżenie : Te trzy polecenia nie są równoważne. Jeśli twój shebang odwołuje się do innego pliku binarnego (takiego jak Stack), wówczas trzecie polecenie spróbuje parsować argumenty z Bash, co się nie powiedzie.
— Jezen Thomas
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.