94 votes

Comment exécuter une application avec des arguments de ligne de commande sous Mac OS ?

Existe-t-il un moyen simple d'ajouter des arguments de ligne de commande à une application sur un Mac ? Par exemple, pour exécuter Opera en mode kiosque ou pour utiliser un profil différent dans Firefox, je peux taper

$ /Applications/Opera.app/Contents/MacOS/Opera -kioskmode
$ /Applications/Firefox.app/Contents/MacOS/firefox -P profilename -no-remote

Sous Windows, je peux ajouter les arguments aux propriétés du raccourci, mais comme les Macs n'utilisent pas de raccourci en tant que tel et exécutent les applications directement, ce n'est pas possible.

J'ai constaté que le lancement des applications par bash ou Applescript fonctionne partiellement :

# Bash
#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote

# Applescript    
do shell script "exec /Applications/Opera.app/Contents/MacOS/Opera -kioskmode"

Je peux les rendre exécutables et leur attribuer une icône et tout fonctionne parfaitement, sauf que lorsque je lance l'un de ces pseudo-programmes, une fenêtre de terminal ou une icône Applescript reste ouverte tant que l'application est ouverte. Vraisemblablement, en utilisant la commande Applescript open éviterait cela, mais comme je n'exécute pas l'application telle qu'elle est emballée (juste /Applications/Firefox ), cela ne fonctionne pas.

Existe-t-il un meilleur moyen d'exécuter des applications avec des arguments de ligne de commande ? Sinon, existe-t-il un moyen d'empêcher une session de terminal persistante ou une icône Applescript de rester ouverte pendant que l'application est ouverte ?

Modifier

Selon un Page Wiki de Mozilla il est préférable d'utiliser un script pour exécuter l'application avec des arguments. L'ajout d'un & à la fin du script tue la fenêtre persistante du Terminal. Le seul inconvénient maintenant est qu'il ouvre une fenêtre de Terminal morte et déconnectée (ce qui est mieux que la fenêtre persistante, mais quand même...).

#!/bin/sh
/Applications/Firefox.app/Contents/MacOS/firefox -P default -no-remote &

10voto

user1722483 Points 111

Il s'agit d'une vieille discussion, mais elle revient toujours dans les recherches Google, alors j'ai pensé que je devais ajouter un ou deux cents.

Il est probablement préférable d'utiliser un "identifiant de paquet" plutôt que le chemin absolu vers l'exécutable :

open -b com.google.Chrome --args --profile-directory="Profile 1"

Ou dans un script d'Apple :

do shell script "open -b com.google.Chrome --args --profile-directory='Profile 1'"

Ce que je n'ai pas encore compris, c'est comment ouvrir une nouvelle instance/fenêtre avec un profil différent lorsque la première est déjà ouverte. (Si j'exécute l'AppleScript ci-dessus, puis un autre avec "Profil 2", alors Chrome ne fera qu'ouvrir une autre fenêtre en tant que "Profil 1") :(

4voto

anonymous Points 41

AppleScript

do shell script "/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --incognito & killall applet"

Deux points ici.

  1. L'espace est échappé par une barre oblique inverse qui est à nouveau échappée par une barre oblique inverse.
  2. applet killall peut causer des problèmes, parce qu'il peut y avoir d'autres applets en cours d'exécution.
  3. Enregistrez-le comme programme

Cependant, il fonctionne bien sous 10.6.5.

3voto

Dav Points 531

Ce qui suit devrait vous permettre de spécifier des arguments de ligne de commande pour le .app lui-même :

Cliquez à droite sur le paquet .app, sélectionnez "Show Package Contents", naviguez jusqu'à Info.plist, double-cliquez dessus, trouvez la clé Args, modifiez.

Je n'ai pas de machine OS X à portée de main en ce moment, donc je ne peux pas vérifier si vous pouvez aussi faire cela avec un alias (si vous voulez garder le .app d'origine sans argument, et cetera).

3voto

jlgrall Points 21

Enveloppez votre application dans un lanceur AppleScript.

Voici les étapes.

  1. Créez un AppleScript avec le contenu suivant, et enregistrez-le en tant qu'application (dans cet exemple, il est nommé "Firefox 3 launcher.app").

    set pathToApp to (POSIX path of (path to me)) & "Firefox 3.app"
    do shell script "open -a \"" & pathToApp & "\" --args -P default -no-remote"
  2. J'ai trouvé cette application dans le Finder, j'ai fait un clic droit dessus, j'ai montré le contenu du paquet.

  3. Placez votre application à la racine du contenu du paquet. (Dans cet exemple, ce serait "Firefox 3.app").

    Résultat : /Applications/Firefox 3 launcher.app/Firefox 3.app

  4. Vous pouvez maintenant ouvrir votre lanceur d'applications.

Notas:

  • Les mises à jour automatiques de l'application enveloppée devraient fonctionner dans la plupart des cas.
  • Il devrait être possible de faire en sorte que tout glisser-déposer vers le lanceur soit automatiquement redirigé vers l'application enveloppée (avec un peu plus de script).
  • Le lanceur se ferme automatiquement après le lancement de l'application enveloppée.
  • L'avantage de cette méthode est qu'il y a peu de risques à ouvrir directement l'application enveloppée.

1voto

Pourquoi n'utilisez-vous pas :

#!/bin/sh
open /Applications/Firefox.app

C'est simple mais ça marche.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X