classpath=
é a sintaxe da shell para atribuir uma variável, então o shell sabe que a coisa depois pode ser um caminho para expandir. isso significa que temos que olhar para /jars/*
e /jars/*:/anotherJarsDir/*
. o primeiro tem um prefixo de diretório e um caractere curinga, o segundo é interpretado como "qualquer arquivo em um diretório chamado anotherJarsDir
, em um diretório que termina em dois pontos (este é o *:
), no diretório /jars
.
Observe que o shell não está ciente de que o cólon é um separador de caminho; ele interpreta como parte do nome do diretório. Se você tivesse um arquivo /jars/wx:/anotherJarsDir/yz
, seu caminho corresponderia a isso, mas vários arquivos seriam separados por espaços, não por dois-pontos, e o java por sua vez interpretaria isso como um arquivo /jars/wx
e /anotherJarsDir/yz
(supondo este é o único arquivo, não resultando em espaços no seu classpath)
Conclusão: se você quiser evitar a expansão, cite suas strings, mesmo que uma string sem aspas funcione em casos de canto!