我嘗試了不同的變種如何檢查是否當前運行的外殼是BusyBox的
echo $0
echo $shell
echo $SHELL
ps -p $$
,但沒有人能給出一個與衆不同的輸出。我可以做這樣的事情,但它的醜陋和hackish的:
if ls --help 2>&1 | grep BusyBox; then
echo "it is BusyBox"
else
echo "it is NOT BusyBox"
fi
我嘗試了不同的變種如何檢查是否當前運行的外殼是BusyBox的
echo $0
echo $shell
echo $SHELL
ps -p $$
,但沒有人能給出一個與衆不同的輸出。我可以做這樣的事情,但它的醜陋和hackish的:
if ls --help 2>&1 | grep BusyBox; then
echo "it is BusyBox"
else
echo "it is NOT BusyBox"
fi
需要Linux和readlink
另一種方式:
#!/bin/ash
exe=`exec 2>/dev/null; readlink "/proc/$$/exe"`
case "$exe" in
*/busybox)
echo "It's a busybox shell."
;;
esac
'realpath'也可以。 –
我個人贊成:
if ps ax -o pid,comm | grep `echo $$` | grep busybox ; then
echo "it is BusyBox"
fi
這是一個公平的檢查,以確保您正在運行busybox的外殼。
這可以通過讓ps生成一個pid和程序名稱列表,然後找到我們的pid並檢查程序名是否包含busybox。
我發現有這樣做沒有準確的方法。你最好的運氣是http://stackoverflow.com/questions/3327013/how-to-determine-the-current-shell-im-working-on。而@ Vality的回答。問題:它是否只能在Linux系統中運行? – konsolebox
我不得不放棄,至少現在我知道沒有更好的辦法。嗯,我只需要它用於Linux,添加了適當的標籤。 – svlasov
如果只是針對Linux,我可以給出另一個建議。 – konsolebox