如何使用SDKMAN!从脚本内安装软件包

Ale*_*ann 1 bash sdk sh sdkman

有SDKMAN!已安装(http://sdkman.io/),则可以使用以下命令从命令行安装软件包:

sdk install java 8u144-zulu
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从脚本“ my-installer.sh”中执行相同的操作时,出现错误消息:“ sdk:找不到命令”。

my-installer.sh:

#!/bin/bash
sdk install java 8u144-zulu
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

weH*_*eHe 5

您需要在〜/ .sdkman / bin / sdkman-init.sh中获取源代码,例如

#!/bin/bash
. /home/alexw/.sdkman/bin/sdkman-init.sh
sdk install java 8u144-zulu
Run Code Online (Sandbox Code Playgroud)

'sdk'是在sdkman-init.sh中声明的bash函数,第一行(#!...)启动new(!)shell。

希望有帮助!我们


Pow*_*ers 5

以下是更通用的来源方法sdkman-init.sh

source "$HOME/.sdkman/bin/sdkman-init.sh"
Run Code Online (Sandbox Code Playgroud)

这类似于 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"
Run Code Online (Sandbox Code Playgroud)

which sdk如果您想查看正在获取的函数,请键入:

sdk () {
    COMMAND="$1"
    QUALIFIER="$2"
    case "$COMMAND" in
        (l) COMMAND="list"  ;;
        (ls) COMMAND="list"  ;;
        (v) COMMAND="version"  ;;
        (u) COMMAND="use"  ;;
...
...
Run Code Online (Sandbox Code Playgroud)