
こんにちは。Linux ターミナルに bash: java_home: No such file or directory と表示され、echo $JAVA_HOME と入力すると /usr/lib/jvm/java-8-openjdk-amd64 が表示され、echo $PATH には /usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games と表示されます。sudo apt-get install と入力すると JAVA_HOME:not find と表示されます。問題は見つかりません。私は Kubuntu を使用しています。以下に、ターミナルとホーム ディレクトリの .profile ファイルを示します。修正方法を知っている方がいるかもしれません。よろしくお願いします。
答え1
重要なエラーメッセージは次のとおりです。
/usr/sbin/update-info-dir: 2: /etc/environment: JAVA_HOME: not found
これは、エラー メッセージが から来ていることを示しています/usr/sbin/update-info-dir
。これは、パッケージのインストール/削除操作の一部として実行できるスクリプトです。/etc/environment
ファイルを読み込んで (ソースとして)、そこでエラーが発生しています。
/etc/environment
POSIXシェル形式の環境変数の割り当てのみを含むことになっています。つまり
VARIABLE_NAME=value
必須事項等号の前後にスペースを入れない: スペースがある場合、変数名はシェルコマンドとして解釈され、シェルはそれを実行しようとします。
/etc/environment
あなたのファイルにはおそらく次のような内容が含まれていると思います
JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
したがって、パス名を環境変数に割り当てる代わりに$JAVA_HOME
、ファイルを読み取るシェルはそれを実行するシェル コマンドとして解釈します。シェルは、 という名前のコマンドをJAVA_HOME
2 つのパラメータと で文字通り実行しようとします=
。/usr/lib/jvm/java-8-openjdk-amd64
という名前のコマンドはJAVA_HOME
存在しないため、エラー メッセージが表示されます。
ファイルを編集し/etc/environment
、環境変数の割り当てにおける等号の前後のスペースを削除します。
答え2
sudoは環境変数を維持しません。
sudo JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 apt-get ...
sudo設定でこれが許可されていない場合は、上記のようsudo -i
に実行してみてください。JAVA_HOME=... apt-get...