2 votes

Ouvrir automatiquement une fenêtre de terminal et exécuter une commande, de manière robuste

Je cherche un moyen d'ouvrir automatiquement une nouvelle fenêtre de Terminal.app et d'y exécuter une commande.

J'avais l'habitude de faire ça avec AppleScript, d'une manière similaire à ceci :

tell application "Terminal"
  do script ("some-command")
end tell

La distribution officielle de Julia ouvre le terminal Windows de la même manière.

Toutefois, si Terminal.app est configuré pour exécuter une commande au démarrage (ce qui est un moyen pratique souvent recommandé pour définir un nouveau shell sans modifier globalement le shell de connexion), cette méthode échoue tout simplement.

Existe-t-il une méthode robuste qui fonctionne même lorsqu'un autre shell est utilisé ?

enter image description here

0 votes

Pourquoi ne pas modifier votre journal dans le shell, plutôt que d'utiliser la commande de surcharge ? Je pense que ma réponse devrait fonctionner dans les deux cas, je suppose donc que vous avez une bonne raison de choisir cette option.

0 votes

@bmike J'ai utilisé cette méthode car elle était recommandée par MacPorts : trac.macports.org/wiki/howto/bash-completion Je craignais de changer le shell de connexion pour quelque chose qui pourrait être supprimé ou cassé (par exemple, une mise à niveau échouée). Je ne sais pas ce qui se passerait alors.

2voto

Oskar Points 1242

Enregistrez tout script que vous souhaitez dans un fichier et lorsque vous changez l'extension en .command

Finder fera robuste une fenêtre de ligne de commande qui est nouvelle pour exécuter cette commande / script. Cela fonctionne pour tout #!/bin/whatever shell ou script vous démarrez le fichier texte.

AppleScript peut ouvrir des documents comme lorsque le Finder clique dessus pour les ouvrir, cela devrait être un moyen assez universel d'accomplir votre tâche.

0 votes

Le fichier doit également être exécuté, sinon on obtiendra l'erreur suivante, par exemple "Le fichier "nomfichier.command" n'a pas pu être exécuté car vous n'avez pas les privilèges d'accès appropriés."

0 votes

@user3439894 En effet. Je devrais probablement développer un peu cela avec une autre édition.

0 votes

Il manquait une pièce à l'édifice : lancer cette .command de manière programmatique, il faut utiliser open . Cependant, il ne fonctionne toujours pas si Terminal est configuré pour exécuter une commande au démarrage. Elle souffre du même problème que la méthode AppleScript que j'ai utilisée précédemment. Est-ce que cela fonctionne pour vous ?

0voto

shylent Points 4590

C'est probablement trop tard pour le faire, mais j'ai rencontré le même problème aujourd'hui. La solution est d'ajouter le shell que vous utilisez à /etc/shells . Ensuite, l'AppleScript fonctionne comme prévu.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X