Perché "quale" comando non ti dà il percorso corretto?

5

Vedi la seguente versione di MVN. Mi chiedo perché "quale" comando non ti fornisce le informazioni corrette.

LM-SIN-00676037:myproject haibliu$ mvn --version
Apache Maven 3.0.3 (r1075438; 2011-03-01 01:31:09+0800)
Maven home: /usr/share/maven
Java version: 1.6.0_37, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.8", arch: "x86_64", family: "mac"

LM-SIN-00676037:myproject haibliu$ which mvn
/usr/local/bin/mvn

LM-SIN-00676037:myproject haibliu$ /usr/local/bin/mvn --version
Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)
Maven home: /usr/local/Cellar/maven/3.0.4/libexec
Java version: 1.6.0_37, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.8", arch: "x86_64", family: "mac"

Giusto per chiarire: / usr / bin / mvn viene fornito con il mio Max OS X, Mountain Lion. E ho usato Homebrew per installare / usr / local / bin / mvn. Successivamente, ho cambiato l'ordine di PATH in / etc / paths.

LM-SIN-00676037:myproject haibliu$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
LM-SIN-00676037:myproject haibliu$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Questo è tutto ciò che ho fatto. E sto usando la shell bash.

    
posta haibin 05.12.2012 - 17:29
fonte

2 risposte

5

che è un programma esterno, che cerca di determinare in che modo la tua shell risolverà un comando dal $ PATH esistente, ma è possibile che lo faccia male.

Se stai usando bash come shell, usa il comando incorporato di bash "type" per avere la shell stessa che ti dice come risolverà quel comando:

$ which mvn
/usr/bin/mvn
$ type mvn
mvn is /usr/bin/mvn
$ type type
type is a shell builtin
$ type which
which is hashed (/usr/bin/which)

Puoi vedere qui che nel mio ambiente / usr / bin / which e il tipo built-in della shell sono d'accordo. Nel tuo sembra che non lo fanno, anche se sono curioso del perché non lo fanno. Forse hai modifiche PATH che non sono state esportate? Prova "export PATH" e poi "which mvn" again.

    
risposta data 05.12.2012 - 17:50
fonte
0

cosa c'è in $PATH ? e ancora più importante, dove hai installato mvn ? Ricordo che quando ho provato ad usare MacPorts Phyton 2.7.3 ho dovuto aggiungere /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python all'inizio della $PATH per which per darmi il pitone giusto. Per ottenere il percorso giusto ho dovuto aggiungere questo in ~/.bash_profile :

source ~/.bashrc

# MacPorts Installer addition on 2010-03-17_at_21:13:03: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:$PATH

quindi, a seconda dovrai modificare il percorso in base al punto in cui mvn 3.0.3 avrà il pugno.

    
risposta data 05.12.2012 - 17:54
fonte

Leggi altre domande sui tag