如何检查当前运行的shell是否为BusyBox

时间:2014-07-22 08:18:43

标签: linux shell busybox

我尝试了不同的变体

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

3 个答案:

答案 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