Come impostare una versione specifica di Java come JAVA_HOME in Fish in macOS


0

Stavo usando Bash come shell predefinita su macOS ma ho deciso di passare a Fish.

Sto cercando di passare tra diverse versioni di Java. In bash è stato fatto usando il~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

Ho impostato l'equivalente su Fish ~/.config/fish/fish_variables

set -x JAVA_HOME `/usr/libexec/java_home -v 1.7`

Sfortunatamente, la versione di Java non viene modificata. Come posso impostare le variabili di ambiente (versione specifica di Java, in particolare) usando ~/.config/fish/fish_variables?

AGGIORNARE:

Secondo le FAQ , invece di ~/.config/fish/fish_variables, ~/.config/fish/config.fishdovrebbe essere usato. Inoltre ho creato ~/.config/fish/fish.configinvece di ~/.config/fish/config.fish.


Il file ~ / .config / fish / fish_variables non ha alcun significato intrinseco per i pesci. Cioè, fish non genererà automaticamente il contenuto di quel file.
Kurtis Rader,

@KurtisRader Secondo le FAQ fishshell.com/docs/2.2/faq.html Ho anche provato a creare ~ / .config / fish / config.fish, ma non ha aiutato.
kmb

2
Quella FAQ non dice nulla su un file chiamato fish_variables . L'unico file di configurazione dell'utente fish che viene fornito automaticamente da ogni processo fish è ~ / .config / fish / config.fish . Se inserisci un echo hellofile in quel file e avvii una nuova conchiglia di pesce, vedi la parola "ciao"?
Kurtis Rader,

@KurtisRader Dalla mia parte c'era un errore di battitura ... Ho creato ~ / .config / fish / fish.config invece di ~ / .config / fish / config.fish. Grazie per l'aiuto!
kmb

1
@kmb Dovresti contrassegnare la risposta di Jake come una soluzione al tuo problema.
Kurtis Rader,

Risposte:


2

Anche se non ho una profonda conoscenza di Fish , in base a ciò che sto leggendo sembra che il problema sia con i backtick nel tuo comando:

/usr/libexec/java_home -v 1.7

Vedi che è proprio così in Bash:

$(/usr/libexec/java_home -v 1.7)

Tienilo a mente e guarda questa voce FAQ Fish :

Come si esegue un sottocomando? Il backtick non funziona!

il pesce usa le parentesi per i sottocomandi. Per esempio:

for i in (ls)
    echo $i
end

Sapendo che la linea di configurazione dovrebbe essere molto probabilmente:

set -x JAVA_HOME (/usr/libexec/java_home -v 1.7)

Sfortunatamente, anche le parentesi non funzionano.
kmb

@kbm Devi fornire ulteriori informazioni. Dire che "non funziona" non è utile. Se digiti quel set -x ...comando in modo interattivo cosa succede?
Kurtis Rader,

@KurtisRader set -x JAVA_HOME (/ usr / libexec / java_home -v 1.7) inserito direttamente nella shell funziona correttamente. Dopo questa azione la versione java è cambiata in 1.7. Dopo aver chiuso e riaperto il terminale, java è tornato alla versione 11. Voglio cambiarlo permanentemente, ma devo mantenere una versione diversa su java installato.
kmb

@kmb Bene, il mio comando è solo una versione diversa di ciò che hai aggiunto ~/.config/fish/fish_variables. Hai provato questa variante con parentesi quando è stata inserita ~/.config/fish/fish_variables?
Jake:

1
@JakeGould Parenthesis invece di backtick è stato uno dei due errori: grazie per averlo sottolineato. La seconda cosa che non andava era il file usato da me per la configurazione. Invece di ~ / .config / fish / fish_variables, dovrebbe essere usato ~ / .config / fish / config.fish. Ho aggiornato la domanda con queste informazioni.
kmb
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.