我目前正在尝试运行一个脚本,该脚本需要定义一些 LSB 函数。以下是这种情况:
echo "step 1"
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS
echo "step 2"
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
echo "step 3"
但是脚本在步骤 2 之后中止执行,我从未得到输出“步骤 3”。此脚本是 deluged 的启动脚本。它曾经可以工作,但我注意到我的 deluge 不再工作了,我将问题追溯到这行代码。
有人知道这是什么原因造成的吗? init-functions 文件存在于指定的目录中。
答案1
如果 shell 脚本中的某些内容使用了 exec 或 exit 而不是 return 或者只是到达文件末尾,那么在获取该 shell 脚本的过程中,您就会看到中止。
从文件系统布局来看,我猜你使用的是 RedHat 衍生产品,在 CentOS 6 和 CentOS 7 上,/lib/lsb/init-functions 文件非常短,默认情况下包含的内容很少,因此除非对其进行了修改,否则我不认为你看到的结果可能存在。你的下一个调试步骤可能是检查该文件是否有其他来源,否则插入更多调试消息以准确找出它在哪一行中中止。
答案2
我找到了问题所在:文件权限错误,不允许脚本读取该文件。