2010-12-19 24 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