Problemas de RUTA para los scripts init.d al inicio

8

Tengo un script simple que inicia una instancia de unicornio (en Ubuntu 12.04LTS).

#!/bin/sh

case "$1" in
    start)
       echo "starting"
       cd /path && bundle exec unicorn -c /path/config/unicorn.rb -D -E production
      ;;
     stop)
      echo "Stopping Unicorn Instances"
      kill `cat /tmp/unicorn.pid`
    ;;
    restart)
    echo "sending USR2 to all unicorns"
    kill -s USR2 `cat /tmp/unicorn.pid`
    ;;
esac
exit 0

Se comporta correctamente cuando se llama: /etc/init.d/unicorn_boot.sh start

Quiero que comience en el arranque, así que ejecuté: update-rc.d -f unicorn_boot.sh defaults

Cuando ahora reinicio me sale el siguiente error:

/etc/rc2.d/S20unicorn_boot.sh: 10: /etc/rc2.d/S20unicorn_boot.sh: bundle: not found

Verifiqué el bundlecomando y está instalado en el /usr/local/binmismo para el rubycomando.

Parece que en el arranque PATHtodavía no incluye /usr/local/bin. ¿Cómo puedo arreglar esto?

Peterdk
fuente

Respuestas:

9

Initscripts son responsables de establecer una ruta apropiada ellos mismos. Establezca la $PATHvariable en la parte superior del script:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
mgorven
fuente
OK gracias. No lo sabia. ¡Ya está arreglado!
Peterdk
Alternativamente, debería poder configurar PATH="$PATH:/usr/local/bin"para agregar sus rutas requeridas a la variable, en lugar de anular por completo la variable $ PATH.
jaseeey
Confiar en un $ PATH externo es un riesgo de seguridad. ¡No agregue una RUTA existente! Crea la tuya con la lista exacta que necesitas.
Brendan Byrd