我有 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
) 安装的。