Comment exécuter un fichier .sh ou .command dans Terminal


87

J'ai toujours voulu pouvoir exécuter un script que j'ai téléchargé en ligne directement à partir du Finder, mais un double clic sur le fichier ne fonctionne pas.

Réponses:


103

Ouvrez Terminal, tapez sh /path/to/fileet appuyez sur entrée.

Plus rapide est de taper shet un espace, puis faites glisser le fichier vers la fenêtre et relâchez l'icône n'importe où sur la fenêtre.


3
Que se passera-t-il si le script shell est écrit dans la syntaxe d’un autre shell, telle que tcsh, zsh ou ksh? Le suffixe shdésigne un script shell "n'exécutez pas le script dans ce shell".
fd0

3
@ fd0 La ligne shebang se chargera de cela.
user14492

4
@ user14492- Lorsque vous appelez un script shell, shell shell_scriptla ligne shebang est ignorée. Le shell lit la première ligne sous forme de commentaire.
fd0

@ fd0, je ne comprends pas. En quoi sh /path/to/fileune sémantiquement différente de l'alternative /path/to/file.sh?
Pacerier

2
@ Pacerier- Dans la première forme, l'utilisateur appelant doit pouvoir lire le fichier et choisir quel interpréteur lira le fichier. Dans le second formulaire, les autorisations du fichier doivent être lues et exécutées pour l'utilisateur qui appelle et l'interpréteur est déterminé par le hachage sur la première ligne du script. Dans les deux cas, le noyau n'interprète pas le suffixe du fichier.
fd0

12

Alternativement, vous pouvez aussi faire

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

qui exécutera également le fichier exécutable avec son shell spécifié (si spécifié dans le shebang #!/bin/(shell)


1
Dans la question, il est écrit "lancez un script que j'ai téléchargé en ligne". Les autorisations de fichiers téléchargés sur Internet sont généralement définies sur 644.
nohillside

@patrix, je pense que ce n'est pas seulement Internet, mais chaque fichier copié d'un autre système de fichiers sur le vôtre à cause du masque par défaut de votre compte.
rwenz3l

9
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

éditez ~/.bash_profileet ajoutez la ligne suivante:

alias myfile=./myfile.sh

exécutez la ligne de commande suivante:

source ~/.bash_profile

vous pourrez alors exécuter votre fichier en tant que programme

$ myfile


dans Ubuntu, tout script de votre chemin peut être exécuté aussi longtemps que vous le souhaitez #~/bin/sh, tandis que, dans OSXle script, il doit avoir une .shextension et un aliaspour chacun d'eux. : -O
Fabrizio Bertoglio

6

Suivez ces étapes pour exécuter les fichiers de script:

  1. Cliquez avec le bouton droit sur le fichier .sh.

  2. Survolez Ouvrir avec .

  3. Choisissez Autre ... .

  4. Vous devriez être dans le dossier Applications . Ouvrez le dossier Utilitaires et sélectionnez Terminal.app.

  5. Si vous ne pouvez pas sélectionner Terminal.app, modifiez les applications activées d'applications recommandées à toutes les applications . C'est au bas de la fenêtre.

  6. Si vous voulez ouvrir tous les .shfichiers avec Terminal.app, cochez Toujours ouvrir avec .

  7. Appuyez sur le bouton Ouvrir dans le coin inférieur droit de la fenêtre.


3

La raison pour laquelle cela ne fonctionne pas après le téléchargement est que les autorisations sur les fichiers ne le permettent pas. Pour activer les autorisations d'exécution, ouvrez Terminal et tapez chmod 755 /path/to/script. Au lieu de saisir le chemin d'accès complet, vous pouvez faire glisser le script dans la fenêtre du terminal à partir du Finder. Ensuite, pour exécuter, il suffit d'entrer /path/to/script. Encore une fois, vous pouvez faire glisser le fichier et le déposer dans la fenêtre du terminal. Cette syntaxe doit exécuter le script en utilisant le shell approprié, tel que défini à la première ligne du script.


Mon fichier .sh s'ouvre dans l'éditeur de texte avec lequel j'ai créé le fichier. Comment puis-je l'ouvrir dans Terminal à la place? J'ai défini les bonnes autorisations.
Bart

@bart, vous devez ajouter l'extension .command pour exécuter directement un script dans finder.
rwenz3l
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.