2011-06-21 10 views
5

Tengo una secuencia de comandos zsh que quiero ejecutar de modo que también cargue mi archivo .zshrc. Creo que tengo que ejecutar mi script en modo interactivo?Cómo detener la suspensión de una secuencia de comandos zsh (salida de tty)

Por lo tanto, mi guión comienza así:

#!/bin/zsh -i 

if [ $# = 0 ] 
then 
    echo "need command line paramter..." 
    exit 
fi 

Sin embargo, cuando trato de ejecutar este script en el fondo, mi guión fue suspendido (incluso si paso en el número correcto de parámetros):

[1] + suspended (tty output) 

Mi pregunta es: ¿Cómo puedo hacer una secuencia de comandos que se puede ejecutar en segundo plano que también carga mi archivo .zshrc de inicio? Si tengo que ponerlo en modo interactivo, ¿cómo puedo evitar la suspensión en el problema de salida?

Gracias

+2

Incluya el comando completo que usó para iniciar su script. – Flimzy

Respuesta

6

no utilice el modo interactivo como un hash-bang!

En cambio, la fuente de su archivo zshrc en el guión si lo quiere:

#!/bin/zsh 
source ~/.zshrc 
... 

Para referencia futura, se puede utilizar el bultin disown para separar un trabajo previamente en segundo plano de la concha por lo que no puede ser suspendido o cualquier otra cosa. El shell padre entonces se puede cerrar con ningún efecto sobre el proceso:

$ disown %1 

Usted puede hacerlo directamente desde la línea de comandos cuando se inicia el programa utilizando el operador &! en lugar de sólo &:

$ ./my_command &! 
Cuestiones relacionadas