Quando você usa
cp source destination
e destination
é um diretório existente, então source
será colocado nesse diretório.
Portanto, cp
se comporta de maneira aparentemente diferente porque o diretório js
em $WAR_HOME
não foi removido antes de ser copiado novamente com o mesmo caminho de destino.