关于java:在ZshZshell终端中执行java带的命令

在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 nomatch
fi

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理