在mac执行一个命令时

java -cp .:/release/bin/../conf:/release/bin/../lib/* com.ex.TestApplication

发现报错

zsh: no matches found: .:/release/bin/../conf:/release/bin/../lib/*

那么这是一个什么样的状况呢?
起因是在Zsh终端中,通配符(例如*)默认是开启的,这可能导致java命令中的类门路无奈正确解析,能够通过执行setopt +o nomatch命令来禁用通配符,然而,如果脚本中增加了这一行, 在linux环境下, 又无奈执行,怎么办呢?

if [ "$SHELL" = "/bin/zsh" ]; then    echo "以后Shell解释器为Zsh"    setopt +o nomatchfi

能够通过上述代码来实现,在上述代码中,通过查看$SHELL环境变量的值是否为/bin/zsh来判断以后Shell是否为Zsh。当然, 这个办法实用于大多数状况, 但不是百分百精确的。