Script de shell de Applescript

Esto me ha estado volviendo loco. Tengo un script que es un ejecutable dentro de /usr/local/bin/, que funciona perfectamente en Terminal, pero no puedo hacer que Applescript lo llame:

RunShell("estc R505")

on RunShell(oscript)
    do shell script oscript
end RunShell

no hace nada En su lugar, he intentado dar la ubicación real /usr/local/bin/estcy llamarla en bash con bash o sh... nada funciona. Debería devolver una cadena de texto y funciona perfectamente en la terminal.

¿Qué es estc, es un ejecutable binario o un script ejecutable? Si este último y está llamando ejecutables que no están en el valor predeterminado PATH pasado al do shell script comando , entonces la segunda parte de mi respuesta debería ayudar. Por cierto, ¿qué hace el estc comando ?

Respuestas (2)

En el Editor de secuencias de comandos , si ejecuta el siguiente comando de AppleScript :

do shell script "echo $PATH"

Verá cómo PATHse define el do shell script comando :

"/usr/bin:/bin:/usr/sbin:/sbin"

Debe incluir el nombre de ruta completamente calificado para cualquier ejecutable que no esté en el PATH, que se muestra arriba, para que funcione en un comando AppleScript .do shell script


Otra opción es agregar un export PATH comando al do shell script comando , por ejemplo:

set exportPath to "export PATH=$PATH:/usr/local/bin:/opt/X11/bin:"

Y en tu caso, utilízalo como, por ejemplo:

RunShell("estc R505")

on RunShell(oscript)
    set exportPath to "export PATH=$PATH:/usr/local/bin:/opt/X11/bin:; "
    do shell script exportPath & oscript
end RunShell

Obviamente, ajuste la ...parte de export PATH=$PATH:...para reflejar su real PATHque no está incluido en el valor predeterminado PATH pasado al do shell script comando como se muestra más arriba.

Esto podría funcionar:

do shell script "PATH=/usr/local/bin:$PATH estc R505"