Ich versuche, mit Cygwin ein Linux-Skript auf meinem Windows-Computer auszuführen.
Ich habe die Lösungen von bereits gelesen und ausprobiertEs gibt keinen 'sudo'-Befehl in Cygwin, ohne Erfolg.
Ich habe ein Skript, das sudo in der normalen Linux-Umgebung verwendet. Aber wenn ich das Skript unter Cygwin ausführe, wird diese Fehlermeldung ausgegeben:
project_common.sh: line 604: sudo: command not found
Ich weiß, dass Cygwin kein Sudo hat, und in der zuvor erwähnten Frage wurde Folgendes gesagt:
>#!/usr/bin/bash
>"$@"
Ich habe versucht, diesen Befehl auszuführen, bevor ich das Skript ausgeführt habe. Und ich habe auch versucht, den Befehl in das Skript einzubetten. Nichts davon hat geholfen. Ich bin mir also nicht sicher, was ich übersehe.
Antwort1
Entfernen Sie alle sudo
's in der Datei und führen Sie das Skript als Administrator aus.
Allerdings root
stimmen die Vorstellungen von Administratoren unter Linux und Windows nicht genau überein. Möglicherweise treten weiterhin Berechtigungsprobleme auf, die manuell oder durch weitere Änderungen am Skript behoben werden müssen, insbesondere unter Windows Vista/7.
Übrigens wollte die referenzierte Frage, dass Sie
>#!/usr/bin/bash
>"$@"
in einer Datei namens sudo
, geben Sie ihr mit Ausführungsberechtigung chmod
und legen Sie sie dann in einem Verzeichnis in Ihrem ab $PATH
, z. B. /sbin
. Die resultierende Datei wird nichts tun, außer die Parameter auszuführen, die Sie ihr als Befehl geben. Die Idee war, ein „falsches“ sudo zu erstellen, das nichts tut. Sie können auch einfach die sudo
's aus der Datei löschen.
Antwort2
Versuche dies:
#!/usr/bin/env bash
cygstart --action=runas "$@"
Es funktioniert ähnlich wie sudo, der Nachteil ist, dass man den UAC-Dialog manuell bestätigen muss. Dieses Skript ist Teil meinesPunkt-Repo.
Antwort3
Es gibt weitere Antworten aufPaketüberflussUndSuperuserzeigt, wie man einen Befehl mit erhöhten Rechten von einer Cygwin-Eingabeaufforderung aus ausführt. Ich verwende einen Alias:
alias sudo="cygstart --action=runas"
Funktioniert als Charm für externe Programme (allerdings nicht für Shell-Built-Ins):
sudo chown User:Group <file>