Ubuntu,程序当前未安装

Ubuntu,程序当前未安装

我有 Ubuntu 10.04.4。

bin我下载并安装了 scala(.tgz 存档),解压到 /opt,为所有用户设置读取和执行权限。还更新了 PATH/etc/environment

当我仅使用scala命令运行程序时,虽然名称已自动完成,但并未运行:

root@ubuntu:/home/user# scala
  The program 'scala' is currently not installed.  You can install it by typing:
  apt-get install scala

但如果我使用可执行文件的完整路径,它就可以工作。

scala/bin 中的可执行文件位于 PATH 中(自动完成功能有效)。我做错了什么?

root@ubuntu:/home/user# which scala
root@ubuntu:/home/user# whereis scala
scala: /opt/scala-2.9.2/bin/scala /opt/scala-2.9.2/bin/scala.bat /opt/scala/bin/scala /opt/scala/bin/scala.bat
root@ubuntu:/home/user# echo $PATH
${SCALA_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root@ubuntu:/home/user# echo $SCALA_HOME
/opt/scala

root@ubuntu:/home/user# cat /etc/environment 
JAVA_HOME="/usr/lib/jvm/java-7-oracle"
SCALA_HOME="/opt/scala"
PATH=${SCALA_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

答案1

从您的输出来看,您的 PATH 语句看起来是错误的:

root@ubuntu:/home/user# echo $PATH
${SCALA_HOME}/bin:${JAVA_HOME}/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

他们${SCALA_HOME}应该已经扩展到那里。

您添加了什么/etc/environment

更新:

啊,好的。/etc/environment 不由 shell 处理,因此变量扩展(如您在 PATH 中尝试的)在那里不起作用。它只期望键值对。

将更新后的 PATH 放入/etc/profile或类似内容中。您应该能够将 $SCALA_HOME 和 $JAVA_HOME 设置保留在 中/etc/environment,但是变量扩展将无法在其中工作。

(类似问题:https://askubuntu.com/questions/78856/referencing-environment-variables-in-etc-environment

答案2

您需要添加/opt/scala/bin到您的$PATH。从路径判断,您的Scala安装可能是从源代码编译的,而不是使用 Ubuntu 的包管理 ( apt/ dpkg) 安装的。

相关内容