Isso não é devido à função, porque você está encadeando vários comandos em uma linha com ;
separando-os. Mas &
já é um separador de comando e usar ambos sem um comando no meio (como em ... port $2 & ; sleep 3 ...
) é um erro de sintaxe. Solução: remova o ;
redundante:
runproject() { cd $HOME/projects/$1 ; workon $1 ; port $2 & sleep 3 ; google-chrome 127.0.0.1:$2 ;}
Ou use quebras de linha como separadores de comando, em vez de ;
:
runproject() {
cd $HOME/projects/$1
workon $1
port $2 &
sleep 3
google-chrome 127.0.0.1:$2
}
... o que eu prefiro, porque acho mais fácil de ler.