我最近在 nixos 上安装了 sdkman.io 并遇到了一些奇怪的错误。还安装了which、jdk和less后,我在运行时仍然收到此错误sdk list
less -R: command not found
但我可以less
从同一个终端运行。我怎样才能解决这个问题?
答案1
less
您需要确保及其参数之间有一个未转义的空格字符。
从错误消息中可以看出,shell 将整个字符串less -R
视为命令,因此命令执行字符串中的空格字符被转义。可能是因为某处使用了引号(不太可能使用反斜杠)。
查看 sdkman-cli 源代码,您export PAGER="less -R"
的.bashrc
或.bash_profile
.
在这种情况下,第 33 或 35 行src/main/bash/sdkman-utils.sh
会产生这个错误。这似乎是预期的,因为PAGER
环境变量用于定义可执行文件,并且假设它不包含其他选项(看起来像常见做法而不是标准)。
设置less
环境变量的选项LESS
应使用,因此在您的情况下应应用以下设置:
export PAGER=less
export LESS="-R"
作为练习,您可以通过在 shell 中键入以下内容来验证您在任何系统上是否收到此错误消息:
"less -R"