Node.js &引用;can';t cd“;作为服务启动时在init.d内

Node.js &引用;can';t cd“;作为服务启动时在init.d内,node.js,service,forever,cd,init.d,Node.js,Service,Forever,Cd,Init.d,我在init.d中运行了一个非常简单的脚本,可以使用forever启动节点服务器。直到最近,它一直工作得很好,我找不到什么可以改变的。我在Debian 7上,最近没有做任何更新。 这是我的脚本(从某处复制,保持简单,用于测试) 问题是当我运行时(启动或停止,效果相同) 我明白了 如果我使用sudo/etc/init.d/nodeup start运行脚本 它运行得很好,没问题 我无法理解正在发生什么,或者我的机器上可能发生了什么变化。 你知道我应该检查什么会导致这种行为吗?或者在我的脚本中更改什么

我在init.d中运行了一个非常简单的脚本,可以使用forever启动节点服务器。直到最近,它一直工作得很好,我找不到什么可以改变的。我在Debian 7上,最近没有做任何更新。 这是我的脚本(从某处复制,保持简单,用于测试)

问题是当我运行时(启动或停止,效果相同)

我明白了

如果我使用sudo/etc/init.d/nodeup start运行脚本 它运行得很好,没问题

我无法理解正在发生什么,或者我的机器上可能发生了什么变化。 你知道我应该检查什么会导致这种行为吗?或者在我的脚本中更改什么以使其再次工作?
感谢您的帮助

我将脚本的shell从sh改为bash 这似乎使脚本更加稳定

#!/bin/sh
#/etc/init.d/nodeup
. /lib/lsb/init-functions
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
. /home/pat/env
cd /var/www/mydir
FOREVER_ROOT=/var/log/forever/mydir
export FOREVER_ROOT
case "$1" in
   start)
    exec forever  start -m 10 -o $FOREVER_ROOT/output.log -e $FOREVER_ROOT/error.log ./bin/www  ./
    ;;
   stop)
    exec forever stop ./bin/www 
    ;;
   *)
    echo "Usage: service nodeup {start|stop}"
    exit 1
    ;;
    esac
  exit 0
 sudo service nodeup start 
/etc/init.d/nodeup: 12: cd: can't cd to /var/www/mydir