【发布时间】:2021-05-01 12:55:30
【问题描述】:
我使用zsh作为默认shell,我在终端上运行echo $0并得到-zsh,但是下面的代码无法检测到默认的交互式shell
#!/usr/bin/env bash
if [ -n "$ZSH_VERSION" ]; then
echo "zsh"
elif [ -n "$BASH_VERSION" ]; then
echo "bash"
else
echo "others"
fi
检测结果总是bash,为什么?谢谢。
【问题讨论】:
-
显示如何启动脚本。
-
@Cyrus run
./detect.sh -
好的,展示你的shebang。
-
@Cyrus 抱歉,我已经更新了代码块中的 shebang。从您的回答中,我意识到 shebang 导致了这个问题。如果我想使用这个shebang,我怎样才能检测到它?谢谢。
-
@Bill :您明确地将脚本编写为 bash 脚本。如果以这种方式运行它,则不涉及其他 shell。如果你将它调用为
ksh detect.sh,它应该输出others。