196 votes

Comment rendre ce fichier.sh exécutable par double-clic ?

Tout d'abord, j'utilise un Mac.

Ensuite, je dois exécuter ce "file.sh" que nous allons appeler. Chaque fois que j'ai besoin de l'exécuter, je dois ouvrir le Terminal et taper :

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

C'est bien, mais j'ai l'impression que ce serait beaucoup plus rapide si je faisais en sorte que le fichier s'exécute au double-clic, vous ne pensez pas ?

Ma question est donc la suivante : comment rendre ce fichier exécutable par double-clic ?

Mes idées étaient soit :

a) taper quelque chose comme chmod dans le terminal et changer les permissions ?

b) créer un fichier, y mettre le code que j'ai écrit ci-dessus ^ et ensuite rendre ce fichier exécutable ?

c) créer un système d'automatisation pour faire cela ?

Quel est le meilleur moyen, ou existe-t-il un moyen encore meilleur ? Veuillez également m'expliquer autant que vous le pouvez, car je suis novice en matière de terminaux. Merci.

1 votes

Si vous voulez un script agréable et facile à cliquer, alors oui, Automator est le bon outil. Vous semblez le savoir d'après votre question, alors quelle est votre question ?

0 votes

Même question mais j'ai un dmg de jdk, un dossier d'applications pour créer des icônes, un Jar mais je n'arrive pas à exécuter/créer via automator ou .command

391voto

Chris Page Points 8523

Par défaut, *.sh sont ouverts dans un éditeur de texte (Xcode ou TextEdit). Pour créer un shell script qui s'exécutera dans Terminal lorsque vous l'ouvrirez, nommez-le avec l'extension "command", par ex, file.command . Par défaut, ceux-ci sont envoyés à Terminal, qui exécutera le fichier comme un script de l'interpréteur de commandes.

Vous devrez également vous assurer que le fichier est exécutable, par exemple :

chmod +x file.command

Sans cela, le terminal refusera de l'exécuter.

Notez que le script ne doit pas obligatoirement commencer par un #! dans ce scénario spécifique, car Terminal s'arrange spécifiquement pour l'exécuter avec votre shell par défaut. (Bien sûr, vous pouvez ajouter un #! si vous voulez personnaliser le shell utilisé ou si vous voulez vous assurer que vous pouvez l'exécuter à partir de la ligne de commande tout en utilisant un shell différent).

Notez également que Terminal exécute le shell script sans changer le répertoire de travail. Vous devrez commencer votre script par une balise cd si vous avez besoin de l'exécuter avec un répertoire de travail particulier.

1 votes

Merci pour cette réponse plus utile.

51 votes

Vous pouvez également utiliser cd "`dirname "$0"`" pour définir le répertoire de travail actuel comme étant le répertoire où se trouve votre script shell.

3 votes

Pour des raisons esthétiques, vous devriez également faire un clic droit sur le fichier .command aFnodr oapeesnt htehtei cianlfloys .r eTahseornes yyoouu hsahvoeu ltdh ea lospot iroing htto chliidcek tohne tshuef f.icxo m(muanndde rf inlaem ea n&d soupfefni xt)h.e infos. Pour des raisons esthétiques, vous devriez également faire un clic droit sur le fichier .command et ouvrir les infos. Vous avez alors la possibilité de masquer le suffixe (sous le nom et le suffixe).

33voto

NobleUplift Points 827

Supprimez l'extension dans son ensemble, puis double-cliquez dessus. La plupart des scripts shell du système sont comme ça. Tant qu'il possède une extension shebang ça va marcher.

1 votes

BTW, "shebang" est généralement cette ligne devant toutes les lignes : #!/bin/sh mais cela peut être différent, lisez le lien fourni pour les autres cas.

0 votes

Cette approche ne nécessite-t-elle pas de faire chmod ?

12voto

Vous pouvez simplement dire au Finder d'ouvrir le .sh dans le Terminal :

  1. Sélectionnez le fichier
  2. Obtenir des informations (cmd-i) sur celui-ci
  3. Dans la section "Ouvrir avec", choisissez "Autre " dans le menu déroulant.
  4. Choisissez Terminal comme application

Cela aura exactement le même effet que de le renommer en .command sauf que vous n'avez pas à le renommer :)

8voto

Manish Points 887
  1. Terminal de lancement
  2. Tapez -> nano nomfichier
  3. Coller le contenu du fichier Batch et le sauvegarder
  4. Tapez -> chmod +x nom du fichier
  5. Il va créer un fichier exe, vous pouvez maintenant double cliquer dessus.

Le nom du fichier doit être entre guillemets. Puisque j'utilise Mac->Dans mon cas, le contenu de fichier de lots est

cd /Utilisateurs/votreNom/Documents/SeleniumServer

java -jar selenium-server-standalone-3.3.1.jar -role hub

Cela marchera à coup sûr.

0voto

Night Coder Points 5

Vous pouvez modifier le fichier exécutable en utilisant chmod comme ceci

chmod 755 file.sh

et utiliser cette commande pour l'exécution

./file.sh

2 votes

Bienvenue à SO ! Votre réponse n'ajoute rien à la réponse déjà acceptée. Veuillez expliquer en quoi elle est différente des autres réponses qui existent déjà.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X