2010-12-19 15 views
6

Ich versuche mit der Fischschale sbt laufen.Warum hört sbt beim Fischen auf?

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

Als ich sbt nennen bekomme ich folgende

[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. 

Dann sbt quitt. Warum? Sollte es nicht einfach auf Befehle warten?

Auf eine möglicherweise verwandte Anmerkung, ich bin sicher, dass ich nicht #! [Shell] in der ersten Zeile tun musste, als ich bash verwendete. Was hat sich geändert?

UPDATE: Wenn die entsprechende Skript zu schreiben, funktioniert gut bash alles zu verwenden, sbt tut kein Build beendete dann

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

Was gibt 'dirname (status -f)' in einem 'fish' Skript aus? Ist 'sbt-launch-0.7.4.jar' in diesem Verzeichnis? Im Allgemeinen ist es keine gute Idee, Dinge aus dem gleichen Verzeichnis zu starten, in dem sich das Skript befindet. Es funktioniert oft nicht. Sie sollten einen festen Ort verwenden: '/ Pfad/zu/sbt-launch-0.7.4.jar'. Laufen Sie "Fisch" als Ihre interaktive Shell? Gibt es einen Grund dafür, dass ein so einfaches Skript ein 'Fisch'-Skript und kein' SH'-Skript sein muss? –

+0

Ja, das Glas ist im gleichen Verzeichnis wie das Skript, wie hier http://code.google.com/p/simple-build-tool/wiki/Setup Gute Punkte, vielleicht sollte ich nur Bash verwenden (bin neu hier, wie Fisch, und vielleicht weggetragen) – Pengin

Antwort

3

Wenn Sie keinen shebang (#!/usr/local/bin/fish in Ihrem Beispiel) verwenden, Ein Skript wird mit der Standard-Shell auf Ihrem System ausgeführt, die wahrscheinlich /bin/sh ist.

Wenn Sie Ihr Skript mit #!/bin/sh oder #!/bin/bash ausführen funktioniert es so, wie Sie es erwarten?

Es gibt nichts in Ihrem Skript, das beeinflussen sollte, wie sich die Dinge anders verhalten als bei anderen Shells. Ich verstehe nicht, wie sich dein Skript auf das bezieht, was du tust (hauptsächlich, weil ich mit sbt nicht vertraut bin). Wie lautet der Name Ihres Skripts? Wie heißt es? Wie rufst du sbt an?

+0

Das Skript heißt 'sbt' in ~/bin und basiert auf diesen Anweisungen http://code.google.com/p/simple-build- tool/wiki/Setup Normalerweise, wenn ich bash benutze, kann ich einfach 'sbt' aufrufen und es wird ausgeführt und zeigt mir die sbt Kommandozeile. – Pengin

1

Sieht so aus, als ob Sie die Shell als Skript und nicht als Shell ausführen. Fish wird nur Ihren Java-Befehl ausführen und dann beenden.

den Knall Nehmen Sie das Skript aus und es ausführbar und man kann es einfach als

/path/to/Fisch/path/to/script

Ich glaube, laufen zu lassen.

+0

Ohne das "!" Ich bekomme einen Fehler: "exec: Exec format error Fisch: Die Datei '/ Users/Pengin/bin/sbt' ist als eine ausführbare Datei markiert, konnte aber nicht vom Betriebssystem ausgeführt werden." – Pengin

+0

Sorry, ich meinte die ganze Zeile. Dann ist "fish/script" dasselbe wie "fish java ..." und man kann sehen, was vor sich geht. Leider bin ich momentan nur auf meinem iPad, arbeite also aus dem Speicher. – JohnMetta

+0

Gleicher Fehler leider, aber ich habe das bemerkt, wenn ich die #! Line-in und entfernen Sie die "$ Argv" dann funktioniert es wie erwartet (die Fähigkeit zu One-Shot-sbt-Ziele zu verlieren ist). Kein Glück mit der einzigen "Java" -Linie. Kann nicht herausfinden, warum es "nicht vom Betriebssystem ausgeführt werden konnte" – Pengin

Verwandte Themen