script que chama um script de terceiro que chama tela - como iniciar a tela desanexada?

2

Eu tenho um script 'myscript.sh' , que chama um script de fornecedor 'vendorscript.sh' . O script do fornecedor executa a tela em primeiro plano.

Eu gostaria de executar o script do fornecedor com a tela desanexada. Se possível, eu gostaria de fazer isso sem invadir o vendorscript.sh ou o vendor_screenrc .

Existe uma maneira de fazer isso?

myscript.sh:

# some other commands
...
source vendorscript.sh

vendorscript.sh:

# some other commands
...
exec screen -c vendor_screenrc
    
por Chris Snow 23.04.2014 / 08:51

1 resposta

2

Se vendorscript.sh não usar um caminho absoluto para iniciar o programa screen , você poderá tentar manipular o $PATH antes da execução. Isso também pressupõe que $PATH não seja redefinido / manipulado em vendorscript.sh .

Por exemplo, criei um diretório /opt/vendor e criei um script de shell chamado screen :

#!/bin/bash
exec /usr/bin/screen -d -m "$@"

E em myscript.sh :

#!/bin/bash
PATH="/opt/vendor:$PATH"
source vendorscript.sh

Como /opt/vendor é o primeiro em $PATH , o vendorscript.sh usará meu script de wrapper em vez do binário screen . De acordo com man 1 screen :

-d -m Start screen in "detached" mode. This creates a new session but doesn't attach to it. This is useful for system startup scripts.

E o "$@" passa pelos argumentos restantes da invocação original.

    
por 23.04.2014 / 09:25