6

我正在尝试使用鱼壳让 sbt 运行。

#!/usr/local/bin/fish 
java -Xmx512M -jar (dirname (status -f))/sbt-launch-0.7.4.jar "$argv"

当我调用 sbt 时,我得到以下信息

[info] Building project MyProject 1.0 against Scala 2.8.1
[info]    using MyProject with sbt 0.7.4 and Scala 2.7.7
[info] 
[info] Total session time: 1 s, completed Dec 19, 2010 4:29:46 PM
[success] Build completed successfully.

然后 sbt 退出。为什么?它不应该只是等待命令吗?

在一个可能相关的注释中,我确信当我使用 bash 时,我不必在第一行执行#![shell] 。有什么改变?

更新:编写等效脚本以使用 bash 时一切正常,sbt 不进行构建然后退出

#!/bin/bash
java -Xmx512M -jar `dirname $0`/sbt-launch-0.7.4.jar "$@"
4

2 回答 2

3

如果您不使用 shebang(#!/usr/local/bin/fish在您的示例中),则脚本将使用系统上的默认 shell 运行,这很可能是/bin/sh.

如果您使用脚本运行脚本,#!/bin/sh或者#!/bin/bash它是否按您期望的方式工作?

您的脚本中没有任何内容会影响事物与其他 shell 的不同工作方式。我不明白你的脚本与你正在做的事情有什么关系(主要是因为我不熟悉 sbt)。你的剧本叫什么名字?怎么称呼?你怎么称呼sbt?

于 2010-12-19T17:16:13.090 回答
1

看起来您正在将 shell 作为脚本而不是 shell 运行。Fish 只会运行你的 java 命令然后退出。

从该脚本中取出爆炸并使其可执行,您可以将其运行为

/path/to/fish /path/to/脚本

我相信。

于 2010-12-19T17:27:34.737 回答