Как установить определенную версию Java как JAVA_HOME в Fish в macOS
Я использовал Bash в качестве оболочки по умолчанию для MacOS, но решил перейти на Fish.
Я пытаюсь переключаться между различными версиями Java. В Bash это было сделано с помощью ~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
Я установил эквивалент рыбы ~/.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
,
1 ответ
Хотя я не очень хорошо знаком с Fish, на основании того, что я читаю, кажется, что проблема в обратных галочках в вашей команде:
/usr/libexec/java_home -v 1.7
Вы видите, что это просто так в Bash:
$(/usr/libexec/java_home -v 1.7)
Имейте это в виду и посмотрите на эту запись FAQ по Рыбе:
Как запустить подкоманду? Обратный удар не работает!
рыба использует скобки для подкоманд. Например:
for i in (ls) echo $i end
Зная, что строка конфигурации, скорее всего, должна быть:
set -x JAVA_HOME (/usr/libexec/java_home -v 1.7)
function javaenv
if test (count $argv) -eq 0
/usr/libexec/java_home -V
else
switch $argv[1]
case 'ls'
/usr/libexec/java_home -V
case 'set'
set -xU JAVA_HOME (/usr/libexec/java_home -v $argv[2])
end
end
end
Можно поместить указанную выше функцию в ~/.config/fish/functions и использовать ее для получения содержимого java_home с помощью
javaenv
и установите содержимое java_home с помощью
javaenv set 1.8
Идея и содержание взяты отсюда