Mam plik script.sh, a typem tego pliku jest plik shellscript. Chcę, aby ten plik był plikiem wykonywalnym application / x. Jak mogę to zrobić?
command-line
executable
Ziyaddin Sadigov
źródło
źródło
Odpowiedzi:
Możesz oznaczyć plik jako wykonywalny:
Następnie możesz wykonać to w następujący sposób:
Jeśli chcesz użyć innego polecenia, aby go uruchomić, możesz dodać alias:
Dodaj to na końcu pliku:
Otwórz nową sesję terminala lub wpisz
source ~/.bashrc
swój terminal, aby go zastosować. Następnie po prostu użyj nowej nazwy, aby uruchomić skrypt.źródło
./filename.sh
nie tylkofilename.sh
?filename
i nie./filename
./filename.sh
określa plik w bieżącym katalogu, a użyciefilename.sh
określa plik w bieżącym katalogu lub dowolnym katalogu ŚCIEŻKI. Pierwsze użycie usuwa wszelką niepewność, do którego pliku można uzyskać dostęp. W takim przypadku próbujesz wykonać skrypt za pomocą bash lub innego interpretera (na podstawie założonego#!/bin/bash
pierwszego wiersza skryptu), po prostu wpisując nazwę pliku. To użycie wymaga podania katalogu. Alternatywnie możesz spróbować,bash filename.sh
który wydaje się działać z nieokreślonym katalogiem.Istnieją dwa sposoby na wykonanie pliku:
Metoda GUI:
Przejdź do karty uprawnień, a następnie zaznacz pole `Wykonaj: [] Zezwól na uruchamianie pliku jako programu.
Metoda terminala / polecenia:
Możesz użyć:
cd /to/my/required/directory
Następnie uruchomić
chmod +x filename.extension
Lub po prostu uruchom:
chmod +x /path/to/your/filename.extension
chmod
ma również kilka bardziej zaawansowanych opcji:Spacje mają pokazywać, że jest on podzielony:
- rwx --- ---
Pierwszy zestaw
---
to Użytkownik. Drugi to Grupa, a ostatni Inny (każdy inny)r oznacza Odczyt, w dla Zapis i x dla eXecute.
Aby więc umożliwić wszystkim odczytanie, ale tylko Grupie do wykonania, a Użytkownikowi do odczytu i zapisu (ale z jakiegoś powodu nie można go wykonać), byłoby:
-rw- rx- r--
Ale zostanie to dodane do polecenia jako:chmod +rw-rx-r-- /path/to/file.extension
chmod
może to również zrobić w liczbach. Opiera się na binarnym (myślę, że to 1,2 i 4)Są więc te liczby:
Wykonanie przez użytkownika to
100
. Wykonaj według grupy to010
. Wykonane przez inny to 001Napisz przez użytkownika to
200
. Pisz według grup to020
. Napisz innym jest002
.Odczytany przez użytkownika to
400
. Odczytany przez grupę to040
. Czytane przez innych jest004
.Następnie dodajesz je razem, aby uzyskać pożądaną kombinację.
Aby umożliwić wszystkim odczytanie, ale tylko Grupę do wykonania, a Użytkownik do napisania (ale z jakiegoś powodu nie do wykonania):
400 + 040 + 004
i010
i200
Daje to w sumie 600 + 050 + 004 = 654.
Następnie możesz uruchomić polecenie.
chmod +654 /path/to/file.extension
ustawić.Aby ustawić wszystkie uprawnienia, możesz wpisać:
chmod +rwxrwxrwx /path/to/file.extension
Lub (jest to trochę łatwiejsze do napisania, ale trudniejsze do zapamiętania):
chmod +777 /path/to/file.extension
Wreszcie możesz wykonać:
chmod -777 /path/to/file.extension
Aby odebrać wszystkie uprawnienia wszystkim.
I:
chmod +300 /path/to/file.extension
Aby dodać odczyt i zapis dla użytkownika, bez wpływu na jakiekolwiek inne uprawnienia (np. Wykonaj uprawnienia).
Ta strona ma bardzo przydatne małe pole wyboru siatki, w którym możesz zaznaczyć żądane opcje i daje ci polecenie:
Jednak nie wszystkie możliwe kombinacje są rozsądne w użyciu; główne z nich są następujące:
755 -
Owner
ma wszystkoGroup
iOther
może czytać i wykonywać700 -
Owner
ma wszystko644 -
Owner
potrafi czytać i pisaćGroup
orazOther
potrafi czytać600 -
Owner
potrafi czytać i pisaćA jeśli używasz nietrywialnych grup użytkowników:
775 -
Owner
potrafi czytać i pisaćGroup
orazOther
potrafi czytać770 -
Owner
iGroup
mają wszystko, iOther
mogą czytać i wykonywać750 -
Owner
ma wszystko iGroup
może czytać i wykonywać664 -
Owner
iGroup
umie czytać i pisać, iOther
może po prostu czytać660 -
Owner
iGroup
umie czytać i pisać640 -
Owner
potrafi czytać i pisać orazGroup
potrafi czytać777 i 666 są rzadko używane, z wyjątkiem / tmp.
Dziękuję Ilmari Karonen za wskazanie najczęściej używanych!
źródło
Biegać:
Aby uniemożliwić wykonanie pliku, uruchom:
Na przykład utworzyłem
.sh
plik:Po napisaniu kodu w edytorze vi wyjdę z edytora vi:
źródło