3 votes

Les commandes Shell fonctionnent dans le Terminal mais pas dans le service Automator

J'essaie d'implémenter ces deux commandes très simples dans un service Automator à exécuter par un raccourci clavier (prend une capture d'écran et l'OCR) :

screencapture -i /tmp/tesseract.png
tesseract /tmp/tesseract.png stdout|tr -d \\f|pbcopy

Cela fonctionne très bien lorsque j'exécute ces commandes dans le Terminal, mais pas lorsque j'en fais un service Automator (désolé, c'est en allemand). Automator window Je ne comprends pas : Pourquoi cela fonctionne-t-il dans un cas et pas dans l'autre ? Cela a-t-il un rapport avec le tesseract ?

3voto

user3439894 Points 52496

Tout exécutable qui n'est pas dans le PATH transmis à la Exécuter le Shell script action qui est /usr/bin:/bin:/usr/sbin:/sbin vous devez utiliser l'option nom de chemin entièrement qualifié de la exécutable .

Dans ce cas, par exemple /path/to/tesseract

Vous devriez être en mesure d'obtenir son chemin sur Terminal en utilisant :

which tesseract

Comme tesseract n'est pas une valeur par défaut de MacOS il peut être dans /usr/local/bin/ Cependant which tesseract devrait rendre compte de ses nom de chemin entièrement qualifié .


Au lieu d'utiliser le nom de chemin entièrement qualifié ou en conjonction avec, vous pouvez aussi ajouter un PATH déclaration au sommet de la Exécuter le Shell script action par exemple, pour un bash coquille :

PATH="${PATH}:/usr/local/bin/"

Vous pouvez également remplacer tout ce qui se trouve à droite de l'élément = pour ce que la sortie dans Terminal par exemple echo $PATH est. Ensuite, le Exécuter le Shell script action a le même PATH comme Terminal .

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