我尝试了不同的变体
echo $0
echo $shell
echo $SHELL
ps -p $$
但他们都不能提供独特的输出。我可以做这样的事情,但它丑陋和黑客:
if ls --help 2>&1 | grep BusyBox; then
echo "it is BusyBox"
else
echo "it is NOT BusyBox"
fi
答案 0 :(得分:3)
另一种需要Linux和readlink
的方式:
#!/bin/ash
exe=`exec 2>/dev/null; readlink "/proc/$$/exe"`
case "$exe" in
*/busybox)
echo "It's a busybox shell."
;;
esac
答案 1 :(得分:2)
我个人赞成:
if ps ax -o pid,comm | grep `echo $$` | grep busybox ; then
echo "it is BusyBox"
fi
这是一个公平的检查,以确保您运行busybox shell。
这可以通过让ps生成一个pids vs程序名列表然后找到我们的pid并检查程序名是否包含busybox来实现。
答案 2 :(得分:0)
可能并不完美,但这是我检查的方式:
test -h /bin/ls # busybox or other single binary system
test -h /bin/ls && test `readlink /bin/ls` = busybox # it is busybox