Ubuntu

啟動時 init.d 腳本的 PATH 問題

  • October 2, 2014

我有一個啟動獨角獸實例的簡單腳本(在 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

它在呼叫時行為正確:/etc/init.d/unicorn_boot.sh start

我希望它在啟動時啟動,所以我跑了: update-rc.d -f unicorn_boot.sh defaults

當我現在重新啟動時,我收到以下錯誤:

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

我檢查了bundle命令,它已安裝在/usr/local/bin命令ruby中。

似乎在啟動時PATH還不包括/usr/local/bin. 我怎樣才能解決這個問題?

Initscripts 負責自己設置適當的路徑。$PATH在腳本頂部設置變數:

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

引用自:https://serverfault.com/questions/481685