Estoy tratando de ejecutar accesos directos de MacOS a través del script NodeJS. Para lograrlo, creé accesos directos en la aplicación de accesos directos de MacOS, que normalmente se ejecutan en la terminal (ZSH) al escribir shortcuts run shortcutname ( Docs ). Funcionan bien cuando se escriben directamente en la terminal, pero no cuando se les llama desde un script de NodeJS.
Mi guión se ve así:
exec('shortcuts run shortcutname', (error, stdout, stderr) => { if (error) { console.log(`error: ${error.message}`); return; } if (stderr) { console.log(`stderr: ${stderr}`); return; } console.log(`stdout: ${stdout}`); }); Al iniciar el script desde el node script.js , no hace nada. No devuelve nada ni termina. Intenté reemplazar los shortcuts run shortcutname por otros comandos que el sistema debería saber. Por ejemplo, ls o git . Todos ellos trabajan. Además, cuando omito el nombre del shortcutname al final, se queja del parámetro faltante.
Sospechaba que faltaban derechos de acceso, pero aparentemente NodeJS se ejecuta como mi usuario normal. Ejecutar whoami en el contexto del script devuelve mi nombre de usuario.
NODE_DEBUG=cluster,net,http,fs,tls,module,timers node script.js no mostró nada inusual. También intenté usar la ruta completa del binario. which shortcuts me dieron /usr/bin/shortcuts . Que usé en mi secuencia de comandos /usr/bin/shortcuts run shortcutname .
¿Qué me estoy perdiendo? ¡Gracias por adelantado!
Aunque pensé que lo había probado, encontré la solución: execSync en lugar de exec funciona
Sería genial si alguien pudiera explicar por qué el exec no funcionaría.
¡Salud!