Contexte : texdoc est une commande installée par la distribution LaTeX MacTeX et which texdoc
dans le terminal donne "/Library/TeX/texbin/texdoc".
Dans le terminal, texdoc --version
donne :
Texdoc 3.4.1 (2022-03-19) .
Mais dans AppleScript, via do shell script
mais cela n'a pas fonctionné.
do shell script "/Library/TeX/texbin/texdoc --version"
donne l'erreur :
erreur "env : texlua : No such file or directory" numéro 127.
Je ne comprends pas pourquoi AppleScript parle de "texlua" introuvable et de "env" (soit dit en passant which texlua
donne "/Library/TeX/texbin/texlua").
Comment appeler texdoc
con do shell script
?
Editer
En fait, non seulement je ne peux pas appeler directement texdoc --version
mais une fois ce problème résolu par l'appendice /Library/TeX/texbin:
au chemin, un cas d'utilisation réel ne fonctionne toujours pas, par exemple do shell script "texdoc url"
même si j'ajoute /Library/TeX/texbin:
au chemin. Applescript se plaint de ne pas trouver le fichier open
commande ( open
est appelé par texdoc
pour afficher la documentation pdf. C'est très étrange, car lorsqu'on l'appelle directement, par exemple do shell script "open /usr/local/texlive/2022/texmf-dist/doc/latex/url/url.pdf"
, cela fonctionne.
Ainsi, après avoir ajouté export PATH='/Library/TeX/texbin:$PATH';
, le code AppleScript :
do shell script "export PATH='/Library/TeX/texbin:$PATH'; texdoc url"
produit cette erreur :
erreur "sh : open : commande non trouvée \rtexdoc erreur : Échec de l'exécution : open "/usr/local/texlive/2022/texmf-dist/doc/latex/url/url.pdf"" numéro 1
Quelle est donc la méthode complète pour appeler un binaire comme texdoc
avec AppleScript ?
2 votes
Pour information, le shell utilisé ici a un environnement différent de celui du Terminal. Essayez de lancer
env
dans le terminal et l'exécuter dans l'éditeur script avecdo shell script "env"
. Notez en particulier la différence de PATH. Essayez ensuitedo shell script "which tex"
et comparer. Pour plus d'explications de la part d'Apple, jetez un coup d'œil à leur note technique sur le sujet : TN2065 . Vous pouvez faire la plupart des choses, vous devez juste en tenir compte.2 votes
/Library/TeX/texbin/texdoc est probablement un script shell qui dépend d'autres script/programmes dans /Library/TeX/texbin. Ce répertoire se trouve dans votre
PATH
dans un shell interactif, mais pas dans le shell que l'on utilise.do shell script
crée. Essayerdo shell script "PATH="/Library/TeX/texbin:$PATH"; texdoc --version"
0 votes
@Mockman Parmi les différences, dans le terminal, env sorties
PATH=/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Library/Apple/usr/bin
et par AppleScript, j'obtiens seulementPATH=/usr/bin:/bin:/usr/sbin:/sbin
. Pour qui tex J'obtiens/Library/TeX/texbin/tex
dans le terminal et l'erreur"The command exited with a non-zero status." number 1
dans AppleScript. Mais pourquoi ma commande ne fonctionne-t-elle pas lorsque j'ajoute le chemin complet à la commande CLI ?0 votes
@GordonDavisson Oui votre commande fonctionne (en remplaçant les inners
"
avec'
), merci, mais pourquoi ma version ne fonctionne pas alors que j'ai ajouté le chemin complet à la commande ?0 votes
@Mockman La commande qui ne fonctionne pas est la suivante
do shell script "/Library/TeX/texbin/texdoc --version"
. Pourquoi, parce que j'y ai ajouté le chemin complet (/Library/TeX/texbin/texdoc est le chemin complet). Quelle est la différence avecdo shell script "PATH="/Library/TeX/texbin:$PATH"; texdoc --version"
suggéré par Gordon Davisson, et fonctionne ? De plus, mais je dois probablement poser une autre question ( ?), si j'essaiedo shell script "PATH='/Library/TeX/texbin:$PATH'; texdoc url"
Pourtant, c'est la commande "open" qui n'est pas trouvée (texdoc
appelopen
pour afficher le PDF "url.pdf" dans l'application Aperçu).1 votes
Qu'est-ce que vous obtenez avec ça ?
do shell script "export PATH=\"/Library/TeX/texbin:$PATH\" ; echo $PATH"
Votre commande n'inclut pas l'optionexport
. Je pense que le même chemin sera renvoyé dans les deux cas, mais je ne suis pas sûr que le chemin sera disponible pour toutes les commandes suivantes sans l'exportation.0 votes
@Mockman Cela renvoie "/Library/TeX/texbin:/usr/bin:/bin:/usr/sbin:/sbin". Et que dois-je faire quand je découvre qu'en fait, si le shell script "texdoc --version" est résolu en ajoutant "PATH='/Library/TeX/texbin:$PATH' ;" auparavant, cela ne résout pas un vrai cas d'utilisation (remplacer "--version" par un package LaTeX, par exemple "url"). Dois-je modifier ma question ? Poser une autre question ?
do shell script "export PATH='/Library/TeX/texbin:$PATH'; texdoc url"
donne cette erreur : "sh : open : command not found \rtexdoc erreur : Échec de l'exécution : open \"/usr/local/texlive/2022/texmf-dist/doc/latex/url/url.pdf"" numéro 1.0 votes
Veuillez modifier la question pour décrire le problème réel et inclure les résultats que vous obtenez.
0 votes
Notez que, puisque l'environnement shell par défaut n'a pas de fonction tous de vos changements, tout s'exécutant dans ce shell aura le même problème.
0 votes
@nohillside Fait.