我正在尝试找出启动时运行的服务脚本的名称。之后我需要名称来调用默认脚本。
我不能提前假设这个名字,这就是为什么我必须在执行期间得到它。
NAME=${0##*/}
SCRIPTNAME=/etc/init.d/$NAME
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
我尝试了不同的方法:
如果我从shell手动运行脚本但在重启后没有运行脚本,则所有这些都有效。我想init.d启动过程的方式不同。
我正在使用Debian Lenny(我知道,很老......)和bash v3.2.39。如有必要,我打开使用其他类型的shell。
感谢。
答案 0 :(得分:2)
我写了一些额外的代码来确切地知道每个变量的价值,我发现了一个令人兴奋的惊喜。
BASH_SOURCE:/etc/rc2.d/S99iap_FA_iapfa
$ 0:/etc/rc2.d/S99iap_FA_iapfa
$ {0 ## * /}:S99iap_FA_iapfa
Vars不为空,但是rc符号链接名称。我写了一个简单的解决方法,并且知道它似乎独立工作,它是从rc符号链接或服务本身执行的。
RC_NAME=${0##*/}
NAME="${RC_NAME#[SK][0-9][0-9]}"
SCRIPTNAME=/etc/init.d/$NAME
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME