web-dev-qa-db-fra.com

Comment exécuter un script shell sous OS X en double-cliquant?

J'ai un script Shell qui dispose d'une autorisation d'exécution utilisateur sous OS X, mais lorsque je double-clique dessus, il s'ouvre dans un éditeur de texte. Comment puis-je le faire fonctionner en double-cliquant dessus?

200
c2h2
  • Tout d'abord dans le terminal pour rendre le script exécutable en tapant:

    chmod a+x (yourscriptname)
    
  • Ensuite, dans le Finder, cliquez avec le bouton droit de la souris sur votre fichier et sélectionnez "Ouvrir avec", puis "Autre ...".

  • Ici, vous sélectionnez l’application dans laquelle vous souhaitez exécuter le fichier. Pour pouvoir sélectionner un terminal, vous devez passer de "Applications recommandées" à "Toutes les applications". (L'application Terminal.app est disponible dans le dossier Utilitaires)

  • REMARQUE: à moins que vous ne souhaitiez pas que tous les fichiers de cette extension soient exécutés dans un terminal, vous ne devez pas activer la case "Toujours ouvrir avec".

  • Après avoir cliqué sur OK, vous devriez pouvoir exécuter votre script en double-cliquant dessus.
237
Lus

Avez-vous essayé d'utiliser l'extension .command?

207
Hagelin

À partir de OSX 10.10 (Yosemite) et depuis au moins OS X 10.8 (Mountain Lion), le comportement est le suivant lorsque vous ouvrir (double-cliquer) scripts exécutables depuis le Finder:

  • Exécutable scripts[1] avec le suffixe NO ou le suffixe .command: .____.
    • sont exécuté par défaut - aucune configuration requise: .____.
      • une fenêtre nouvelle Terminal s'ouvre dans laquelle le script est exécuté.
      • par défaut, la fenêtre restera ouverte une fois le script terminé afin que vous puissiez inspecter la sortie (à ce stade, le shell qui a exécuté le script est sorti et vous ne pouvez pas interaction avec elle plus longtemps).
        Cependant, via le Preferences... > Profiles du terminal, vous pouvez choisir d’automatiquement fermer la fenêtre lorsque le script se ferme.
    • Caveat: le dossier de travail est invariablement le utilisateur actuel dossier personnel, PAS le dossier dans lequel se trouve le script .
      • Pour qu'un script shell devienne le dossier dans lequel il se trouve, placez
        • cd -- "$(dirname "$BASH_SOURCE")" juste après la ligne Shebang
        • ou, si vous devez rester conforme à POSIX, cd -- "$(dirname "$0")".
        • Pour les cas Edge, tels que la recherche d'un vrai répertoire source du script lien lié, voir cette réponse à moi.
    • Si le script est inattendu pas exécutable:
      • Rendez-le exécutable en exécutant chmod +x <script> dans Terminal; sinon, vous verrez les symptômes suivants:
      • .command: le Finder affiche un message d'erreur trompeur suggérant que le problème peut être résolu via File > Get Info, ce qui n'est pas vrai. Utilisez la méthode chmod +x proposée ci-dessus.
      • pas de suffixe:
        • avec une ligne Shebang (par exemple, #!/bin/bash): le comportement est comme si le suffixe était .sh - voir ci-dessous.
        • avec non ligne Shebang: s'ouvre dans votre éditeur de texte par défaut (TextEdit par défaut).
  • Scripts avec suffixe .sh, qu’il soit exécutable ou non:
    • sont ouverts pour édition dans TextEdit.app ou, si installé, avec Xcode.app.
  • Scripts avec suffixe .scpt ou .applescript (même s’ils sont eux-mêmes marqués comme exécutables, ce qui n’est normalement pas le cas):
    • ouvert pour édition dans [Apple]Script Editor
    • Notez que les fichiers de code source JXA ne semblent pas encore avoir de suffixe distinct.
  • Scripts avec a personnalisé suffixe (un suffixe non encore connu du système), qu'il soit exécutable ou non (en fait, s'applique à tout type de fichier):
    • Invite vous pour que l'application les ouvre avec lorsque vous premier ouvrez-les, et souvenez-vous de ce choix.

[1] Executable signifie: un script avec le (s) bit (s) d'autorisation d'exécutable défini (s) et l'utilisateur appelant - par rapport à la propriété du fichier - donc potentiellement autorisé à l'exécuter.
Si vous utilisez chmod a+x pour définir tous bits de permission (ce qui est typique), n'importe qui peut l'invoquer (en supposant qu'ils soient également autorisés à lire fichier basé sur le (s) bit (s) d'autorisation lecture et la propriété du fichier).

123
mklement0

Vous pouvez également créer une application Mac OS X normale à partir de votre script en utilisant Platypus

37
svth

Le moyen le plus simple est de changer l'extension en .command ou aucune extension.

Mais cela ouvrira le terminal, et vous devrez le fermer. Si vous ne souhaitez voir aucune sortie, vous pouvez utiliser Automator pour créer une application Mac sur laquelle vous pouvez cliquer deux fois, l'ajouter au dock, etc.

  1. Ouvrir l'application Automator
  2. Choisissez le type "Application"
  3. Tapez "run" dans le champ de recherche Actions
  4. Double-cliquez sur "Run Shell Script"
  5. Cliquez sur le bouton Run dans le coin supérieur droit pour le tester.
  6. File > Save pour créer l'application.

 enter image description here

11
wisbucky

Pas besoin d'utiliser des applications tierces telles que Platypus.

Créez simplement un script Apple Script avec Script Editor et utilisez la commande do Shell script "Shell commands" pour les appels de commande directs ou les fichiers de script Shell exécutables, conservez le fichier de script modifiable en sécurité quelque part puis exportez-le pour créer un script d'application. le script de l'application peut être lancé par un double clic ou par une sélection dans un dossier.

8
Luc-Olivier

Vous pouvez également définir les valeurs par défaut par extension de fichier à l'aide de RCDefaultApp:

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

potentiellement, vous pourriez configurer .sh pour qu'il s'ouvre dans iTerm/Terminal, etc. il aurait besoin d'autorisations d'exécution d'utilisateur, par exemple

chmod u+x filename.sh

 RCDefaultApp pref pane

0
Tomachi