2010-12-19 27 views
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]。什么改变了?

UPDATE: 写作时相当于脚本使用bash一切正常,SBT不会做构建然后退出(在你的例子#!/usr/local/bin/fish

#!/bin/bash 
java -Xmx512M -jar `dirname $0`/sbt-launch-0.7.4.jar "[email protected]" 
+0

'dirname(status -f)'在'fish'脚本中输出了什么?该目录中是否有'sbt-launch-0.7.4.jar'?一般来说,尝试从脚本所在的同一目录运行一些东西并不是一个好主意。它通常不起作用。你应该使用一个固定的位置:'/ path/to/sbt-launch-0.7.4.jar'。你是否在运行'fish'作为交互式shell?有这样一个简单的脚本需要成为'鱼'脚本而不是'sh'脚本的原因吗? – 2010-12-19 19:19:19

+0

是的,这个jar和脚本是一样的,按照这里的方向http://code.google.com/p/simple-build-tool/wiki/Setup 好点,也许我应该只用bash (这是新的,就像鱼一样,也许会被带走) – Pengin 2010-12-19 20:34:48

回答

3

如果不使用家当,一个脚本将在您的系统上运行缺省shell,这可能是/bin/sh

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

脚本中没有任何东西会影响事物与其他shell的工作方式不同。我不明白你的剧本与你在做什么有关(主要是因为我不熟悉sbt)。你的脚本的名字是什么?它怎么叫?你打电话过得怎么样?

+0

该脚本在〜/ bin中被称为'sbt',并且基于这些说明http://code.google.com/p/simple-build-工具/维基/安装 通常,使用bash时,我可以调用'sbt',它会运行并向我显示sbt命令提示符。 – Pengin 2010-12-19 17:33:43

1

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

采取爆炸的是剧本,并使其可执行文件,你可以直接运行它

/路径/到/鱼/路径/到/脚本

我相信。

+0

没有“!”我得到一个错误:“exec:执行格式错误 fish:文件'/ Users/Pengin/bin/sbt'被标记为可执行文件,但不能被操作系统运行。 – Pengin 2010-12-19 17:30:51

+0

对不起,我的意思是整条线。然后,“鱼/脚本”就像“鱼爪哇......”一样,你可以看到发生了什么。不幸的是,我现在只在我的iPad上工作,所以从内存中工作。 – JohnMetta 2010-12-19 17:40:10

+0

不幸的是,同样的错误,但我注意到,如果我保持#!输入并移除“$ argv”,然后按预期工作(失去执行一次性目标的能力)。 虽然没有单一的“java”行这样的运气。无法弄清楚它“为什么不能被操作系统运行” – Pengin 2010-12-19 18:03:37