Przeczytaj całą odpowiedź, zanim zaczniesz biegać sudo
Spróbuj biegać sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Polecenie sudo wykonuje polecenia, które następują po nim z uprawnieniami „superużytkownika” lub „roota”. Powinno to umożliwić wykonanie prawie wszystkiego z wiersza poleceń. To powiedziawszy, NIE RÓB TEGO! Jeśli uruchamiasz skrypt na swoim komputerze i nie potrzebujesz go, aby uzyskać dostęp do podstawowych komponentów systemu operacyjnego (zgaduję, że nie jesteś, ponieważ wywołujesz skrypt na czymś w twoim katalogu domowym (~ /)), to powinien być uruchomiony z twojego katalogu domowego, tj .:
~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Przenieś go do ~ / lub podkatalogu i wykonaj stamtąd. Nigdy nie powinieneś mieć tam problemów z uprawnieniami i nie będzie ryzyka, że uzyska dostęp lub zmodyfikuje coś krytycznego dla twojego systemu operacyjnego.
Jeśli nadal masz problemy, możesz sprawdzić uprawnienia do pliku, uruchamiając go ls -l
w tym samym katalogu, co skrypt ruby. Otrzymasz coś takiego:
$ ls -l
total 13
drwxr-xr-x 4 or019268 Administ 12288 Apr 10 18:14 TestWizard
drwxr-xr-x 4 or019268 Administ 4096 Aug 27 12:41 Wizard.Controls
drwxr-xr-x 5 or019268 Administ 8192 Sep 5 00:03 Wizard.UI
-rw-r--r-- 1 or019268 Administ 1375 Sep 5 00:03 readme.txt
Zauważysz, że plik readme.txt mówi -rw-r--r--
po lewej stronie. Pokazuje uprawnienia do tego pliku. 9 znaków z prawej strony można podzielić na grupy po 3 znaki „rwx” (odczyt, zapis, wykonanie). Jeśli chcę dodać prawa wykonywania do tego pliku, wykonałbym chmod 755 readme.txt
i ta część uprawnień stałaby się rwxr-xr-x
. Mogę teraz uruchomić ten plik, jeśli chcę, uruchamiając ./readme.txt
(./ mówi bashowi, aby szukał w bieżącym katalogu żądanego polecenia, zamiast przeszukiwać zmienną $ PATH).
schluchc nawiązuje do przeglądania strony podręcznika man dla chmod, zrób to uruchamiając man chmod
. To najlepszy sposób na uzyskanie dokumentacji dotyczącej danego polecenia,man <command>
echo ~
, zazwyczaj za pomocą/Users/$USER
. Pulpit to tylko katalog poniżej. Unixowe GUI ukrywają katalog domowy, ale nadal tam jest.echo $HOME
. Prawdopodobnie będzie wyglądać tak, jak / Users / <nazwa użytkownika> lub prawdopodobnie / Users / <nazwa użytkownika iTunes>Czy przyznałeś sobie prawa do wykonania skryptu?
Następujące polecenie jako superużytkownik zrobi to za Ciebie:
sudo chmod 755 'filename'
Aby uzyskać szczegółowe informacje, przeczytaj stronę podręcznika systemowego chmod.
źródło
W moim przypadku popełniłem głupią literówkę w shebangu.
Na wypadek, gdyby ktoś inny z grubymi palcami natknął się na to pytanie:
Ups:
#!/usr/local/bin ruby
Chciałem napisać:
#!/usr/bin/env ruby
Nieokreślony błąd, który podaje ZSH, skierował mnie na złą ścieżkę:
ZSH:
zsh: permission denied: ./foo.rb
Grzmotnąć:
bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
źródło
Powinieneś uruchomić skrypt jako „superużytkownik”, po prostu dodaj „sudo” przed poleceniem i wpisz swoje hasło po wyświetleniu monitu.
Więc spróbuj:
Jeśli to nie zadziała, spróbuj dostosować uprawnienia:
źródło
Aby uruchomić w trybie administratora w systemie Mac
źródło
Sprawdź uprawnienia do swojego skryptu Ruby (może nie mieć uprawnień do wykonywania), pliku i katalogu motywu (na wypadek, gdyby nie mógł odczytać motywu lub próbował utworzyć w nim inne motywy) oraz katalog, w którym się znajdujesz po uruchomieniu skrypt (na wypadek, gdyby zamiast tego tworzył pliki tymczasowe w bieżącym katalogu
/tmp
).Każdy z nich może sprawiać Ci żal.
źródło