Quando você não entende algo, você tem que investigar porque funciona da maneira que funciona ... O que você acabou de fazer. E isso é ótimo!
No caso do Maven no Linux / Ubuntu, você acha confuso os locais onde o software está instalado ... OK. Mas você tem que se acostumar ... É assim que funciona.
Talvez você esteja acostumado a instalar-se e nesse caso você tem o controle da localização da instalação e você pode até usar o M2_HOME. Eu voltarei mais tarde no M2_HOME.
Fiz as mesmas pesquisas e para mim não é nada confuso ... Mas é claro que os locais podem ser inesperados para algumas pessoas ...
Instalei o pacote maven2 para fazer as mesmas investigações ...
rudy@rudy-Inspiron-530:~$ sudo apt-get install maven2 (lot of output that was discarded)
rudy@rudy-Inspiron-530:~$ whereis mvn
mvn: /usr/bin/mvn /usr/bin/X11/mvn /usr/share/man/man1/mvn.1.gz
rudy@rudy-Inspiron-530:~$ ls -l /usr/bin/mvn
lrwxrwxrwx 1 root root 21 fév 16 08:23 /usr/bin/mvn -> /etc/alternatives/mvn
rudy@rudy-Inspiron-530:~$ ls -l /usr/bin/X11/mvn
lrwxrwxrwx 1 root root 21 fév 16 08:23 /usr/bin/X11/mvn -> /etc/alternatives/mvn
rudy@rudy-Inspiron-530:~$ ls -l /etc/alternatives/mvn
lrwxrwxrwx 1 root root 25 fév 16 08:23 /etc/alternatives/mvn -> /usr/share/maven2/bin/mvn
rudy@rudy-Inspiron-530:~$ ls -l /usr/share/maven2/bin/mvn
-rwxr-xr-x 1 root root 6331 jun 25 2013 /usr/share/maven2/bin/mvn
Existem links que são usados. Eu vejo no caminho / usr / bin / mvn e / usr / bin / X11 / mvn. Então, / usr / bin / mvn, / usr / bin / X11 / mvn e / etc / alternatives / mvn são TODOS os soft links.
Existem vários níveis e claro que pode confundir você ...
A coisa real está em / usr / share / maven2 / bin / mvn.
rudy@rudy-Inspiron-530:/usr/bin$ file /usr/share/maven2/bin/mvn
/usr/share/maven2/bin/mvn: POSIX shell script, ASCII text executable
O comando 'file' retorna com o que você tem que lidar ...
No caso de / usr / share / maven2 / bin / mvn. É um script de shell!
Você fez a suposição de que JAVA_HOME e M2_HOME e ... devem ser inicializados e é uma suposição falsa ... Essas variáveis podem ajudar você e alguns outros softwares a usar uma versão específica de softwares. Alguns softwares nem funcionam sem algumas dessas variáveis ... Mas quando você está em um terminal (e usa os pacotes) você não precisa dessas variáveis! Tudo vai funcionar sem.