Em primeiro lugar, você deve estar citando suas variáveis:
JAVA_OPTS="-Xms1024m -Xmx1024m"
Como a variável não foi citada, no seu comando original, apenas JAVA_OPTS=-Xms1024m foi interpretado como atribuição de variável e -Xmx1024m como um nome de comando. Isso geralmente é chamado de configuração de variável de ambiente para comando. Por exemplo,
LC_ALL=C date +%s
modificaria o ambiente de date com a configuração LC_ALL=C (que está executando date com a localidade inglesa, mesmo que você tenha outra coisa definida). Observe a diferença aqui - LC_ALL = C não tem espaços, então a divisão de palavras não ocorre, que é o que está acontecendo no caso de JAVA_OPTS=-Xms1024m -Xmx1024m
Em segundo lugar, o traço significa estilo curto de opções. Há também um estilo longo, por exemplo, bash --posix ou ls --format=long . Por que traço? Convenção histórica. Deve-se notar que o padrão POSIX requer apenas versões curtas dos argumentos da linha de comando.