2010-12-19 40 views
6

Estoy tratando de ejecutar sbt utilizando la concha de pescado.¿Por qué se abandona el sbt cuando se usa pescado?

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

Cuando llamo SBT me sale el siguiente

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

A continuación, se cierra SBT. ¿Por qué? ¿No debería esperar órdenes?

En una nota posiblemente relacionada, estoy seguro de que no solía tener que hacer #! [Shell] en la primera línea cuando estaba usando bash. ¿Qué ha cambiado?

ACTUALIZACIÓN: Al escribir el guión equivalente a usar fiesta todo funciona bien, SBT no hace una acumulación continuación, salga

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

¿Qué hace 'dirname (status -f)' salida en un script 'fish'? ¿Está 'sbt-launch-0.7.4.jar' en ese directorio? En general, no es una buena idea intentar ejecutar cosas desde el mismo directorio en que se encuentra el script. A menudo no funciona. Debe usar una ubicación fija: '/ ruta/a/sbt-launch-0.7.4.jar'. ¿Estás ejecutando 'fish' como tu caparazón interactivo? ¿Hay alguna razón por la cual un script tan simple debe ser un script 'fish' y no un script' sh'? –

+0

Sí, el archivo está en el mismo directorio que el script, como se indica en las instrucciones aquí http://code.google.com/p/simple-build-tool/wiki/Setup Buenos puntos, tal vez debería usar bash (Soy nuevo en esto, como pez, y tal vez me deje llevar) – Pengin

Respuesta

3

Si no utiliza un tinglado (#!/usr/local/bin/fish en su ejemplo), un script se ejecutará con el shell predeterminado en su sistema, que probablemente sea /bin/sh.

Si ejecuta su secuencia de comandos usando #!/bin/sh o #!/bin/bash ¿funciona de la manera que espera?

No hay nada en su script que deba afectar la forma en que las cosas funcionan de forma diferente a otras shells. No entiendo cómo se relaciona tu guión con lo que estás haciendo (sobre todo porque no estoy familiarizado con el sbt). ¿Cuál es el nombre de tu script? ¿Como se llama? ¿Cómo llamas a sbt?

+0

El script se llama 'sbt' en ~/bin, y se basa en estas instrucciones http://code.google.com/p/simple-build- tool/wiki/Setup Normalmente, cuando uso bash, puedo simplemente llamar a 'sbt' y se ejecutará y me presentará el símbolo del sistema sbt. – Pengin

1

Parece que está ejecutando el shell como un script, no como un shell. Fish ejecutará tu comando java y luego saldrá.

Tome la explosión de ese guión y hacerlo ejecutable y sólo se puede ejecutar como

/ruta/a/pescado/ruta/a/script

creo.

+0

Sin el "!" Aparece un error: "exec: error de formato Exec fish: el archivo '/ Users/Pengin/bin/sbt' está marcado como ejecutable pero no puede ser ejecutado por el sistema operativo." – Pengin

+0

Lo siento, me refería a toda la línea. Entonces "fish/script" es lo mismo que "fish java ..." y puedes ver lo que está pasando. Desafortunadamente, ahora solo estoy en mi iPad, así que trabajo desde la memoria. – JohnMetta

+0

Desafortunadamente el mismo error, pero me di cuenta de que si mantengo el #! ingrese y elimine el "$ argv", luego funciona como se espera (perdiendo la capacidad de hacer objetivos sbt de un solo disparo). Sin embargo, no fue tanta la suerte con la línea "java". No puedo entender por qué "el sistema operativo no puede ejecutarlo" – Pengin

Cuestiones relacionadas