Envie o comando para segundo plano enquanto captura stdin/stdout usando a função bash

Envie o comando para segundo plano enquanto captura stdin/stdout usando a função bash

Eu tenho um comando para iniciar livy-serverque funciona diretamente na linha de comando:

$cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 &
[1] 4370
19:11:11/livy $
19:11:12/livy $ll /tmp/livy.log
-rw-r--r--  1 boes  wheel  436 Jan 26 19:11 /tmp/livy.log

Mas isso acontecenãode uma função. No meu ~/.profileexiste uma função para iniciar livy-server:

startlivy() { cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 & ; }

/Users/boescst/.profile: line 432: syntax error near unexpected token `;'
-bash: /Users/boes/.profile: line 432: `startlivy() { cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 & ; }'

Os &e comerciais precisam ser escapados de alguma forma?

Aliás, embora isso provavelmente não afete o resultado - estou no El Capitan.

Responder1

O problema é o ponto e vírgula final que precisa ser removido.

startlivy() { cd /git/livy; nohup bin/livy-server > /tmp/livy.log 2>&1 & }

Responder2

Parece que o problema ocorre apenas ao tentar usar uma linha: ou seja, o seguintefaztrabalhar:

startlivy() { 
     cd /git/livy
      nohup bin/livy-server > /tmp/livy.log 2>&1 &  
}

Obs: se alguém souber como lidar com isso de uma só vez eu gostaria de saber - e irei premiar.

informação relacionada