Shell scala-i命令行选项应该做什么?

Shell scala-i命令行选项应该做什么?,shell,command-line,scala,debian,interactive,Shell,Command Line,Scala,Debian,Interactive,我发现scala'-I'命令行选项对于运行一些scala代码,然后将我转储到一个交互式shell中非常有用,这样我就可以生成/检查它定义的内容 但有一件事让我完全困惑:为什么它要加载并运行脚本两次 例如,给定的文件test.scala包含cannonical println("Hello world") 运行 scala -i test.scala 产生: $ scala -i test.scala Loading test.scala... Hello world Loading tes

我发现scala'-I'命令行选项对于运行一些scala代码,然后将我转储到一个交互式shell中非常有用,这样我就可以生成/检查它定义的内容

但有一件事让我完全困惑:为什么它要加载并运行脚本两次

例如,给定的文件test.scala包含cannonical

println("Hello world")
运行

scala -i test.scala
产生:

$ scala -i test.scala
Loading test.scala...
Hello world

Loading test.scala...
Hello world

Welcome to Scala version 2.7.5final (Java HotSpot(TM) Client VM, Java 1.6.0_12).
Type in expressions to have them evaluated.
Type :help for more information.

scala>
显然,运行两次并不是一件很头痛的事情,但是对于需要一段时间才能运行的脚本来说,这很烦人(我正在使用[Project Euler](()问题来学习scala)

我想我误解了-I选项的意图或用法……如何让脚本文件只运行一次


(FWIW,我正在Debian/Lenny上使用来自Squeeze的scala软件包。)

说-I选项“请求预加载文件。它仅对交互式Shell有意义”。似乎不是Shell的人不应该使用它。

在Scala 2.7中,给-i选项双重加载文件是一个众所周知的错误。它在2.8开发主干中长期被修复


RRS

谢谢!这比预期的行为更有意义!