Ubuntu
啟動時 init.d 腳本的 PATH 問題
我有一個啟動獨角獸實例的簡單腳本(在 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