4
我试图找出哪个是启动时运行的服务脚本的名称。之后我需要名称来调用默认脚本。在init.d中获取服务名称
我不能预先假定这个名字,这就是为什么我必须在执行过程中得到它。
NAME=${0##*/}
SCRIPTNAME=/etc/init.d/$NAME
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
我试过型动物办法:
- 使用$ BASH_SOURCE
- 使用BASENAME $ 0
- 使用bash特殊变量$ {0 ## * /}
如果我从shell手动运行脚本而不是在重新启动后运行脚本,它们都可以工作。我想init.d以不同的方式启动进程。
我正在使用Debian Lenny(我知道,相当老...)和bash v3.2.39。如果需要,我打开使用其他类型的shell。
谢谢。
他们各自都失败了?我期望'BASH_SOURCE'失败,因为脚本可能由'/ bin/sh'运行,因此可能没有设置变量。但我期望使用'$ 0'来工作(尽管有一个'S ##'或'K ##'前缀需要处理)。 –
我真的不明白你想要什么。 @EtanReisner是你吗?你能向我解释一下吗? –
谢谢!为了有更好的格式,我回复了一个新的答案。 – RicardoPB