Как использовать SDKMAN! для установки пакетов из скриптов

Наличие СДКМАН! установлен (http://sdkman.io/), я могу установить пакеты из командной строки, используя, например:

sdk install java 8u144-zulu

Однако, когда я пытаюсь сделать то же самое из сценария "my-installer.sh", я получаю сообщение об ошибке: "sdk: команда не найдена".

my-installer.sh:

#!/bin/bash
sdk install java 8u144-zulu

Что я делаю не так?


person Alexander Weickmann    schedule 17.09.2017    source источник
comment
Я предлагаю добавить полный путь к команде sdk.   -  person Cyrus    schedule 17.09.2017


Ответы (2)


вам нужно найти источник в ~/.sdkman/bin/sdkman-init.sh, как в

#!/bin/bash
. /home/alexw/.sdkman/bin/sdkman-init.sh
sdk install java 8u144-zulu

«sdk» — это функция bash, объявленная в sdkman-init.sh, и ваша первая строка (#!...) запускает новую (!) оболочку.

надеюсь, это поможет! мыОн

person weHe    schedule 29.09.2017

Вот как получить источник sdkman-init.sh в более общем виде:

source "$HOME/.sdkman/bin/sdkman-init.sh"

Это похоже на код, который SDKMAN добавляет в ваш файл .zshrc:

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/powers/.sdkman"
[[ -s "/Users/powers/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/powers/.sdkman/bin/sdkman-init.sh"

Введите which sdk, если вы хотите увидеть исходную функцию:

sdk () {
    COMMAND="$1"
    QUALIFIER="$2"
    case "$COMMAND" in
        (l) COMMAND="list"  ;;
        (ls) COMMAND="list"  ;;
        (v) COMMAND="version"  ;;
        (u) COMMAND="use"  ;;
...
...
person Powers    schedule 09.11.2020