Я ответил на тот же вопрос о Reddit здесь , поэтому, чтобы закрыть цикл, вот что я написал:
Ваша текущая логика буквально говорит, что, например, система Debian не можетвозможно запустить systemd или Kubernetes, что явно не соответствует действительности.Это именно то, что if...elif...else...fi
реализует: взаимная исключительность .
Мне кажется, что только специфичные для ОС тесты должны быть взаимоисключающими, поэтому вы, вероятно, смотрите на что-то вроде:
# What OS are we running?
if command apt > /dev/null; then
source $ZSH_CUSTOM/os/debian.zsh
elif command freebsd-version > /dev/null; then
source $ZSH_CUSTOM/os/freebsd.zsh
elif [[ `uname` == "Darwin" ]]; then
source $ZSH_CUSTOM/os/mac.zsh
else
echo 'Unknown OS!'
fi
# Do we have systemd on board?
if command systemctl > /dev/null; then
source $ZSH_CUSTOM/os/systemd.zsh
fi
# Ditto Kubernetes?
if command kubectl > /dev/null; then
source $ZSH_CUSTOM/os/kubernetes.zsh
fi