Masalah PATH untuk skrip init.d saat startup


8

Saya memiliki skrip sederhana yang memulai contoh unicorn (di 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

Berperilaku dengan benar ketika dipanggil: /etc/init.d/unicorn_boot.sh start

Saya ingin memulai saat boot, jadi saya berlari: update-rc.d -f unicorn_boot.sh defaults

Ketika saya reboot sekarang saya mendapatkan kesalahan berikut:

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

Saya memeriksa bundleperintah, dan itu dipasang di /usr/local/bin, sama untuk rubyperintah.

Tampaknya saat boot PATHbelum termasuk /usr/local/bin. Bagaimana saya bisa memperbaikinya?

Jawaban:


9

Skrip init bertanggung jawab untuk menetapkan jalur yang sesuai sendiri. Setel $PATHvariabel di bagian atas skrip:

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin

Ok terima kasih. Tidak tahu itu. Sudah diperbaiki sekarang!
Peterdk

Sebagai alternatif, Anda harus dapat mengatur PATH="$PATH:/usr/local/bin"untuk menambahkan path yang diperlukan Anda ke variabel, daripada mengganti variabel $ PATH sepenuhnya.
jaseeey

Mengandalkan $ PATH di luar adalah risiko keamanan. Jangan tambahkan PATH yang ada! Buat daftar Anda sendiri dengan daftar persis yang Anda butuhkan.
Brendan Byrd
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.