it-swarm.com.de

Wie kann man ein Shell-Skript in OS X per Doppelklick ausführen?

Ich habe ein Shell-Skript, das über die Berechtigung zur Benutzerausführung unter OS X verfügt, aber wenn ich darauf doppelklicke, wird es in einem Texteditor geöffnet. Wie kann ich es per Doppelklick ausführen lassen?

200
c2h2
  • Machen Sie zunächst im Terminal das Skript ausführbar, indem Sie Folgendes eingeben:

    chmod a+x (yourscriptname)
    
  • Klicken Sie dann im Finder mit der rechten Maustaste auf Ihre Datei und wählen Sie "Öffnen mit" und dann "Andere ...".

  • Hier wählen Sie die Anwendung aus, in der die Datei ausgeführt werden soll. In diesem Fall handelt es sich um Terminal. Um ein Terminal auswählen zu können, müssen Sie von "Empfohlene Anwendungen" zu "Alle Anwendungen" wechseln. (Die Anwendung "Terminal.app" befindet sich im Ordner "Dienstprogramme".)

  • HINWEIS: Wenn Sie nicht alle Dateien mit dieser Erweiterung verknüpfen möchten, um im Terminal ausgeführt zu werden, sollten Sie "Always Open With" nicht aktivieren.

  • Nachdem Sie auf OK geklickt haben, sollten Sie Ihr Skript ausführen können, indem Sie einfach darauf doppelklicken.
237
Lus

Haben Sie versucht, die Dateinamenerweiterung .command zu verwenden?

207
Hagelin

Ab OSX 10.10 (Yosemite) und ab mindestens OS X 10.8 (Mountain Lion), das Verhalten ist wie folgt, wenn Sie öffnen (Doppelklick) ausführbare Skripte vom Finder:

  • Executable Skripte[1] entweder mit KEIN Suffix oder Suffix .command:
    • sind ausgeführt standardmäßig - kein Setup erforderlich:
      • es öffnet sich ein new Terminalfenster, in dem das Skript ausgeführt wird.
      • Standardmäßig bleibt das Fenster open , nachdem das Skript beendet wurde, sodass Sie die Ausgabe überprüfen (obwohl zu diesem Zeitpunkt das Die Shell, von der das Skript ausgeführt wurde, wurde beendet und Sie können nicht mehr interact damit).
        Sie können jedoch über Terminal's Preferences... > Profiles Automatisch close das Fenster auswählen, wenn das Skript beendet wird.
    • Einschränkung: Der Arbeitsordner ist ausnahmslos der aktuelle Benutzer Ausgangsordner , NICHT der Ordner in wo sich das Skript befindet.
      • Um ein Shell-Skript in den Ordner zu ändern, in dem es sich befindet, platzieren Sie
        • cd -- "$(dirname "$BASH_SOURCE")" direkt nach der Shebang-Linie
        • oder, wenn Sie POSIX-konform bleiben müssen, cd -- "$(dirname "$0")".
        • In Edge-Fällen, z. B. wenn Sie das wahre Quellverzeichnis eines symlinked Skripts suchen, lesen Sie diese Antwort von mir.
    • Wenn das Skript unerwartet ausführbar ist nicht :
      • Machen Sie es ausführbar, indem Sie chmod +x <script> In Terminal ausführen. Andernfalls treten die folgenden Symptome auf:
      • .command: Finder zeigt eine irreführende Fehlermeldung an, die darauf hinweist, dass das Problem über File > Get Info Behoben werden kann. Dies ist jedoch nicht der Fall. Verwenden Sie die oben vorgeschlagene Methode chmod +x.
      • kein Suffix:
        • mit eine Shebang-Zeile (z. B. #!/bin/bash): Das Verhalten ist so, als wäre das Suffix .sh - siehe unten.
        • with no Shebang-Zeile: Wird in Ihrem Standard-Texteditor (standardmäßig TextEdit) geöffnet.
  • Skripte mit Suffix .sh, ob ausführbar oder nicht:
    • sind geöffnet für Bearbeitung in TextEdit.app oder, falls installiert, mit Xcode.app.
  • Skripte mit Suffix .scpt oder .applescript (auch wenn sie selbst als ausführbar markiert sind, was normalerweise nicht der Fall ist):
    • geöffnet für Bearbeitung in [Apple]Script Editor
    • Beachten Sie, dass die JXA Quellcodedateien (noch) kein eindeutiges Suffix zu haben scheinen.
  • Skripte mit a custom Suffix (ein Suffix, das dem System noch nicht bekannt ist), unabhängig davon, ob sie ausführbar sind oder nicht (gilt tatsächlich für jede Art von Datei) :
    • Eingabeaufforderung Sie damit die App sie öffnet mit wenn Sie zuerst sie öffnen und erinnere dich an diese Wahl.

[1] Executable bedeutet: Ein Skript, bei dem das (die) ausführbare (n) Berechtigungsbit (e) gesetzt sind und der aufrufende Benutzer - bezogen auf das Eigentumsrecht an der Datei - diese möglicherweise ausführen darf.
Wenn Sie mit chmod a+x all (was typisch ist) setzen, anyone kann es aufrufen (vorausgesetzt, sie dürfen auch read die Datei basierend auf den Berechtigungsbits read und den Dateien Eigentum).

136
mklement0

Alternativ können Sie eine normale Mac OS X-Anwendung aus Ihrem Skript erstellen, indem Sie Platypus verwenden.

37
svth

Der einfachste Weg ist, die Erweiterung in .command oder keine Erweiterung zu ändern.

Das Terminal wird jedoch geöffnet, und Sie müssen es schließen. Wenn Sie keine Ausgabe sehen möchten, können Sie mit Automator eine Mac-Anwendung erstellen, die Sie doppelt anklicken, dem Dock hinzufügen können usw.

  1. Öffnen Sie die Anwendung Automator
  2. Wählen Sie den Typ "Anwendung"
  3. Geben Sie "Ausführen" in das Suchfeld "Aktionen" ein
  4. Doppelklicken Sie auf "Run Shell Script".
  5. Klicken Sie auf die Schaltfläche Run in der oberen rechten Ecke, um es zu testen.
  6. File > Save, um die Anwendung zu erstellen.

 enter image description here

11
wisbucky

Sie müssen keine Drittanbieter-Apps wie Platypus verwenden.

Erstellen Sie einfach ein Apple Script mit Script Editor und verwenden Sie den Befehl do Shell script "Shell commands" für direkte Befehlsaufrufe oder ausführbare Shell-Skriptdateien. Bewahren Sie die bearbeitbare Skriptdatei an einem sicheren Ort auf und exportieren Sie sie, um ein Anwendungsskript zu erstellen. Das App-Skript kann durch Doppelklick oder Auswahl im Leistenordner gestartet werden.

8
Luc-Olivier

Sie können auch Standardeinstellungen nach Dateierweiterung mithilfe von RCDefaultApp festlegen:

http://www.rubicode.com/Software/RCDefaultApp/

möglicherweise können Sie .sh so einstellen, dass es in iTerm/Terminal usw. geöffnet wird. Dazu müssten Benutzer Ausführungsberechtigungen haben, z

chmod u+x filename.sh

 RCDefaultApp pref pane

0
Tomachi