Як встановити конкретну версію Java як JAVA_HOME у Fish in macOS


0

Я використовував Bash як стандартну оболонку на MacOS, але я вирішив перейти до Fish.

Я намагаюся переключитися між різними версіями Java. У bash це було зроблено за допомогою ~/.bash_profile

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

Я встановив еквівалент на Fish ~/.config/fish/fish_variables

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

На жаль, версія Java не змінюється. Як я можу встановити змінні середовища (зокрема, конкретну версію Java) ~/.config/fish/fish_variables?

ОНОВЛЕННЯ:

Відповідно до FAQ , замість ~/.config/fish/fish_variables, ~/.config/fish/config.fish слід використовувати. Також я створив ~/.config/fish/fish.config замість ~/.config/fish/config.fish.


Файл ~ / .config / fish / fish_variables не має внутрішнього значення для риби. Тобто, риба не буде автоматично передавати вміст цього файлу.
Kurtis Rader

@ KurtisRader Відповідно до FAQ fishshell.com/docs/2.2/faq.html Я також спробував створити ~ / .config / fish / config.fish, але це не допомогло.
kmb

2
У цьому запиті нічого не сказано про ім'я файлу fish_variables . Єдиний файл налаштувань для риб, який автоматично отримується кожним рибним процесом ~ / .config / fish / config.fish . Якщо ви покладете a echo hello у цьому файлі і почати нову оболонку риби ви бачите слово "привіт"?
Kurtis Rader

@ KurtisRader На моїй стороні була помилка ... Я створив ~ / .config / fish / fish.config замість ~ / .config / fish / config.fish. Спасибі за вашу допомогу!
kmb

1
@kmb Ви повинні відзначити відповідь Джейка як вирішення вашої проблеми.
Kurtis Rader

Відповіді:


1

Хоча я не глибоко знайомий Риба , на підставі того, що я читаю, здається, що проблема полягає в тому, що у вашій команді є зворотні посилання:

/usr/libexec/java_home -v 1.7

Ви бачите, що це так само в Bash:

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

Майте це на увазі і дивіться цей запит на доступ до рибних запитань :

Як запустити підкоманду? Назад не працює!

fish використовує дужки для підкоманд. Наприклад:

for i in (ls)
    echo $i
end

Знаючи, що конфігураційна лінія, швидше за все, має бути:

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

На жаль, дужки також не працюють.
kmb

@ kbm Потрібно надати більше інформації. Сказати, що це "не працює" не є корисним. Якщо ви введете це set -x ... інтерактивно команду, що відбувається?
Kurtis Rader

@KurtisRader set -x JAVA_HOME (/ usr / libexec / java_home -v 1.7), введений безпосередньо до оболонки, працює нормально. Після цієї дії java-версія змінюється на 1.7. Після закриття і відкриття терміналу, java повертається до версії 11. Я хочу змінити її назавжди, але мені потрібно інсталювати іншу версію на java.
kmb

@kmb Моя команда - це просто інша версія того, до чого ви додали ~/.config/fish/fish_variables. Чи перевірили ви цей варіант за допомогою дужок, коли він був поміщений ~/.config/fish/fish_variables?
JakeGould

1
@JakeGould Заохочувальна дужка замість накладок була однією з двох помилок - спасибі за те, що ви вказали. Друге, що було неправильним, був файл, який я використовував для налаштування. Замість ~ / .config / fish / fish_variables слід використовувати ~ / .config / fish / config.fish. Я оновив запитання з цією інформацією.
kmb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.