Mam plik script.sh, a typem tego pliku jest plik shellscript. Chcę, aby ten plik był plikiem wykonywalnym application / x. Jak mogę to zrobić?
Mam plik script.sh, a typem tego pliku jest plik shellscript. Chcę, aby ten plik był plikiem wykonywalnym application / x. Jak mogę to zrobić?
Odpowiedzi:
Możesz oznaczyć plik jako wykonywalny:
chmod +x filename.sh
Następnie możesz wykonać to w następujący sposób:
./filename.sh
Jeśli chcesz użyć innego polecenia, aby go uruchomić, możesz dodać alias:
gedit ~/.bashrc
Dodaj to na końcu pliku:
alias <new name>='/home/<full path to script>/filename.sh'
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.
./filename.sh
nie tylko filename.sh
?
filename
i nie./filename
./filename.sh
określa plik w bieżącym katalogu, a użycie filename.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 to 010
. Wykonane przez inny to 001
Napisz przez użytkownika to 200
. Pisz według grup to 020
. Napisz innym jest 002
.
Odczytany przez użytkownika to 400
. Odczytany przez grupę to 040
. Czytane przez innych jest 004
.
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
i 010
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 wszystko Group
i Other
może czytać i wykonywać
700 - Owner
ma wszystko
644 - Owner
potrafi czytać i pisać Group
oraz Other
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
oraz Other
potrafi czytać
770 - Owner
i Group
mają wszystko, i Other
mogą czytać i wykonywać
750 - Owner
ma wszystko i Group
może czytać i wykonywać
664 - Owner
i Group
umie czytać i pisać, i Other
może po prostu czytać
660 - Owner
i Group
umie czytać i pisać
640 - Owner
potrafi czytać i pisać oraz Group
potrafi czytać
777 i 666 są rzadko używane, z wyjątkiem / tmp.
Dziękuję Ilmari Karonen za wskazanie najczęściej używanych!