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.

Maximus
la source

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.

Maximus
la source
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)

peut-être beharry
la source
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

Reza Farshi
la source
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.

Stwykd
la source
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.

Elliott
la source
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