node.js child_process.spawn Error ENOENT - solo bajo supervisión

Estoy ejecutando un comando con Node.js usando child_process.spawn:

#!/usr/bin/js

var spawn = require("child_process").spawn;

var stockfish = spawn("stockfish");

Esto funciona bien usando$js spawntest.js desde la línea de comando; simplemente se cuelga como cabría esperar porque el subcomando está esperando la entrada.

Sin embargo, cuando configuro este script como un programa de supervisión, falla:

$ sudo supervisorctl start spawntest
spawntest: ERROR (abnormal termination)

Aquí está el contenido del registro de salida de stderror que el supervisor mantiene en /var/log/supervisor/spawntest-stderr---supervisor-RyULL0.log:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:980:11)
    at Process.ChildProcess._handle.onexit (child_process.js:771:34)

El programa supervisorctl se configura así:

[program:spawntest]
command=/home/gus/dev/spawntest.js
autostart=false
autorestart=false
user=gus

¿Por qué esto falla solo bajo Supervisor? ¿Hay algún módulo Node.js / variables globales, etc. que pueda usar para ver cuáles son las diferencias entre invocar un script directamente y a través de Supervisor?