私は最近nixosにsdkman.ioをインストールしましたが、奇妙なエラーが発生しました。 jdk とそれ以下のバージョンもインストールした後でも実行すると、このエラーが発生し続けます。sdk list
less -R: command not found
しかし、less
同じ端末で実行できます。この問題をどのように解決できますか?
答え1
less
そのエントリと引数の間にエスケープされていない空白文字があることを確認する必要があります。
エラーメッセージが示すように、シェルは文字列全体をコマンド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"
練習では、シェルに次のように入力して、すべてのシステムでこのエラーメッセージが表示されることを確認できます。
"less -R"