Parece que a resposta aqui é para o seu caso de uso. Resumindo:
bash --init-file <(echo "yourcommand")
Aqui estão já muitas perguntas como esta, mas cada uma recomenda (uma variante da) a seguinte solução:
screen -dmS somename bash -c "/path/to/script; bash -l"
por exemplo. quando o script terminar, execute um novo bash .
Infelizmente, isso não funciona para mim, porque
script usa a variável $ BASHPID para algo script são executadas para sempre, por ex. precisa terminá-lo com CTRL-C script (mesmo $BASHPID ) Então, a questão é:
screen no modo desanexado (por exemplo, na inicialização) - normalmente isso é feito pelo -dm
.profile , mas isso pode ser superado com o source ~/.profile no script script inicia algum outro programa (binário) que será executado até CTRL-C script eu preciso pegar o mesmo bash (com o mesmo $BASHPID (porque preciso rodar outros scripts o que depende dele) Em suma, precisamos simular o seguinte trabalho interativo:
screen
echo $BASHPID /path/to/script
Após o acima, depois, eu posso fazer
screen -ARR ) echo $BASHPID # produzirá o mesmo que acima Alguma ideia? (pensando no -X mas não funciona, em algum lugar eu provavelmente cometendo um erro)
Parece que a resposta aqui é para o seu caso de uso. Resumindo:
bash --init-file <(echo "yourcommand")
Tags bash gnu-screen shell