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

3次阅读

共计 434 个字符,预计需要花费 2 分钟才能阅读完成。

在 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。当然,这个办法实用于大多数状况,但不是百分百精确的。

正文完
 0