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?

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.