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/estc
y llamarla en bash con bash o sh... nada funciona. Debería devolver una cadena de texto y funciona perfectamente en la terminal.
En el Editor de secuencias de comandos , si ejecuta el siguiente comando de AppleScript :
do shell script "echo $PATH"
Verá cómo PATH
se 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 PATH
que 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"
usuario3439894
estc
, es un ejecutable binario o un script ejecutable? Si este último y está llamando ejecutables que no están en el valor predeterminadoPATH
pasado aldo shell script
comando , entonces la segunda parte de mi respuesta debería ayudar. Por cierto, ¿qué hace elestc
comando ?