J'ai un script shell qui dispose d'une autorisation d'exécution utilisateur sur 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?
233
Tout d'abord dans le terminal, rendez le script exécutable en tapant:
chmod a+x (yourscriptname)
Ensuite, dans le Finder, faites un clic droit sur votre fichier et sélectionnez "Ouvrir avec" puis "Autre ...".
Ici, vous sélectionnez l'application dans laquelle vous souhaitez que le fichier s'exécute, dans ce cas, ce sera Terminal. Pour pouvoir sélectionner le terminal, vous devez passer de "Applications recommandées" à "Toutes les applications". (L'application Terminal.app se trouve dans le dossier Utilitaires)
REMARQUE: sauf si vous ne souhaitez pas associer tous les fichiers à cette extension pour les exécuter dans le terminal, vous ne devez pas cocher "Toujours ouvrir avec".
.command
est par défaut exécutable à partir du Finder, sans qu'il soit nécessaire de demander au Finder comment l'ouvrir..command
extension de fichier.Avez-vous essayé d'utiliser l'
.command
extension de nom de fichier?la source
chmod +x
) mais l'.command
extension est déjà liée à Terminal. Excellente solution, merciDepuis OSX 10.10 (Yosemite) et depuis au moins OS X 10.8 (Mountain Lion) , le comportement est le suivant lorsque vous ouvrez (double-cliquez) des scripts exécutables à partir du Finder :
.command
:Cependant, via Terminal,
Preferences... > Profiles
vous pouvez choisir de fermer automatiquement la fenêtre à la fin du script.cd -- "$(dirname "$BASH_SOURCE")"
juste après la ligne de shebangcd -- "$(dirname "$0")"
.chmod +x <script>
dans Terminal; sinon, vous verrez les symptômes suivants:.command
: Finder affiche un message d'erreur trompeur qui suggère que le problème peut être résolu viaFile > Get Info
, ce qui n'est pas vrai - utilisez lachmod +x
méthode suggérée ci-dessus.#!/bin/bash
): le comportement est comme si le suffixe était.sh
- voir ci-dessous..sh
, exécutables ou non:TextEdit.app
ou, si installés, avecXcode.app
..scpt
ou.applescript
(même s'ils sont eux-mêmes marqués comme exécutables, ce qui n'est normalement pas le cas):[Apple]Script Editor
[1] Exécutable signifie: un script avec le ou les bits d'autorisation exécutables définis et l'utilisateur appelant - relatif à la propriété du fichier - donc potentiellement autorisé à l'exécuter.
Si vous utilisez
chmod a+x
pour définir tous les bits d'autorisation (ce qui est typique), n'importe qui peut l'invoquer (en supposant qu'il est également autorisé à lire le fichier en fonction du ou des bits d'autorisation de lecture et de la propriété du fichier).la source
osascript
vous pouvez inclure dans le.command
fichier au lieu de jouer manuellement avec le profil.osascript -e '...'
commande à la fin de son script? Quelle est la commande spécifique et garantit-elle que l'onglet de droite est fermé même lorsque le script ne s'exécute pas dans l'onglet le plus en avant?osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... Cela pourrait ne pas fonctionner dans tous les scénarios, bien que la redirection à la end est vraiment la clé - l'osascript peut sinon être facilement adapté (par exemple , il peut être nécessaire de changer la fenêtre en tab si c'est le comportement par défaut de votre terminal, etc.)..command
exécution du fichier de script malgré le paramètre de profil?bash
script, ajoutezread -p 'Press Return to close this window.'
comme dernière instruction.Vous pouvez également créer une application Mac OS X standard à partir de votre script à l'aide de Platypus
la source
Le moyen le plus simple consiste à modifier l'extension en
.command
ou aucune extension.Mais cela ouvrira le terminal et vous devrez le fermer. Si vous ne voulez voir aucune sortie, vous pouvez utiliser Automator pour créer une application Mac que vous pouvez double-cliquer, ajouter au dock, etc.
Automator
applicationRun
bouton dans le coin supérieur droit pour le tester.File > Save
pour créer l'application.la source
Pas besoin d'utiliser des applications tierces telles que Platypus.
Créez simplement un script Apple avec Script Editor et utilisez la commande
do shell script "shell commands"
pour des appels de commande directs ou des 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 double-clic ou sélection dans le dossier de la barre.la source
Vous pouvez également définir des valeurs par défaut par extension de fichier à l'aide de RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
vous pourriez éventuellement définir .sh pour l'ouvrir dans iTerm / Terminal, etc.
la source
chmod 774 filename
Remarque : le fichier avec le nom «nom de fichier» qui a le script bash n'a pas d'extension
la source