你好我有一个问题我的linux终端显示bash:java_home:没有这样的文件或目录,当我输入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-shell 风格的环境变量赋值,即
VARIABLE_NAME=value
必须具备等号之前或之后没有空格:如果有空格,变量名将被解释为 shell 命令,并且 shell 将尝试执行它。
我猜你的/etc/environment
文件可能包含类似的内容
JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
$JAVA_HOME
因此,读取文件的 shell不会将路径名分配给环境变量,而是将其解释为要执行的 shell 命令。它将尝试执行一个JAVA_HOME
带有两个参数=
和 的字面命名命令/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...
上面的方法操作