Bitte lesen Sie die gesamte Antwort, bevor Sie versuchen, mit zu laufen sudo
Versuche zu rennen sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Der Befehl sudo führt die folgenden Befehle mit den Berechtigungen "Superuser" oder "Root" aus. Auf diese Weise können Sie fast alles über die Befehlszeile ausführen. Das heißt, tun Sie das nicht! Wenn Sie ein Skript auf Ihrem Computer ausführen und es nicht benötigen, um auf die Kernkomponenten Ihres Betriebssystems zuzugreifen (ich vermute, Sie sind es nicht, da Sie das Skript auf etwas in Ihrem Home-Verzeichnis (~ /) aufrufen), dann sollte es von Ihrem Home-Verzeichnis ausgeführt werden, dh:
~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Verschieben Sie es in ~ / oder ein Unterverzeichnis und führen Sie es von dort aus aus. Sie sollten dort niemals Berechtigungsprobleme haben und es besteht kein Risiko, dass es auf etwas zugreift oder es ändert, das für Ihr Betriebssystem kritisch ist.
Wenn Sie weiterhin Probleme haben, können Sie die Berechtigungen für die Datei überprüfen, indem Sie sie ls -l
im selben Verzeichnis wie das Ruby-Skript ausführen. Sie werden so etwas bekommen:
$ 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
Sie werden feststellen, dass in der Datei readme.txt -rw-r--r--
links steht. Dies zeigt die Berechtigungen für diese Datei. Die 9 Zeichen von rechts können in Gruppen von 3 Zeichen von 'rwx' (Lesen, Schreiben, Ausführen) aufgeteilt werden. Wenn ich dieser Datei Ausführungsrechte hinzufügen möchte, würde ich sie ausführen chmod 755 readme.txt
und dieser Berechtigungsteil würde rwxr-xr-x
. Ich kann diese Datei jetzt ausführen, wenn ich möchte ./readme.txt
(./ weist die Bash an, im aktuellen Verzeichnis nach dem beabsichtigten Befehl zu suchen, anstatt die Variable $ PATH zu durchsuchen).
schluchc spielt darauf an, auf der manpage nach chmod zu suchen man chmod
. Dies ist der beste Weg, um Dokumentation zu einem bestimmten Befehl zu erhalten.man <command>
echo ~
normalerweise mit sagen/Users/$USER
. Der Desktop ist nur ein Verzeichnis darunter. Unix-GUIs verbergen das Home-Verzeichnis vor der Ansicht, aber es ist immer noch da.echo $HOME
. Es wird wahrscheinlich so aussehen wie / Users / <Benutzername> oder möglicherweise / Users / <iTunes-Benutzername>Haben Sie sich das Recht gegeben, das Skript auszuführen?
Der folgende Befehl als Superuser erledigt dies für Sie:
sudo chmod 755 'filename'
Für Details sollten Sie die Manpage von chmod lesen.
quelle
In meinem Fall hatte ich einen dummen Tippfehler im Schebang gemacht.
Für den Fall, dass jemand anderes mit dicken Fingern über diese Frage stolpert:
Hoppla:
#!/usr/local/bin ruby
Ich wollte schreiben:
#!/usr/bin/env ruby
Der vage Fehler, den ZSH gibt, hat mich auf den falschen Weg gebracht:
ZSH:
zsh: permission denied: ./foo.rb
Bash:
bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
quelle
Sie sollten das Skript als "Superuser" ausführen, einfach "sudo" vor dem Befehl hinzufügen und Ihr Passwort eingeben, wenn Sie dazu aufgefordert werden.
Also versuche:
Wenn dies nicht funktioniert, passen Sie die Berechtigungen an:
quelle
Zum Ausführen im Administratormodus auf einem Mac
quelle
Überprüfen Sie die Berechtigungen für Ihr Ruby-Skript (möglicherweise keine Ausführungsberechtigung), Ihre Themendatei und Ihr Verzeichnis (falls es das Thema nicht lesen kann oder versucht, dort andere Themen zu erstellen) und das Verzeichnis, in dem Sie sich befinden, wenn Sie es ausführen das Skript (falls es temporäre Dateien im aktuellen Verzeichnis erstellt
/tmp
).Jeder von ihnen könnte dir Kummer bereiten.
quelle