Como invocar o shell script enquanto fica no modo interativo

1

Quando eu ligo:

execl("/bin/sh", "/bin/sh", (void *) NULL);

O programa / bin / sh / é iniciado, o que abre um shell no qual eu posso digitar comandos. No entanto, se eu ligar:

execl("/bin/sh", "/bin/sh", "~/somescript.sh", (char *) 0 );

O programa / bin / sh também é iniciado e executa o script de shell fornecido, mas depois fecha.

Por que o shell não fica aberto após a execução de um script de shell? Existe alguma maneira de mantê-lo aberto após a execução do script?

Obrigado antecipadamente!

    
por Maricruzz 01.03.2014 / 13:03

2 respostas

3

Este é um comportamento de shell normal que não tem nada em comum com o fato de você executá-lo a partir de C - isso acontece mesmo se você executar o shell com o script a partir da linha de comando:

$ sh ~/somescript.sh

Pode ser difícil forçar o shell a permanecer no modo interativo depois disso. Eu encontrei apenas a opção --rcfile [file] para fazer isso:

Execute commands from file instead of the system wide initialization file /etc/bash.bashrc and the standard personal initialization file ~/.bashrc if the shell is interactive (see INVOCATION below).

Ou seja. você faria

$ sh --rcfile ~/somescript.sh

Mas os arquivos rc do seu sistema, como /etc/bash.bashrc e ~/.bashrc , não serão executados neste caso.

    
por 01.03.2014 / 13:26
-1

Que tal executar um shell interativo no final do seu script?

#!/bin/sh

echo STUFF
echo MORE STUFF
sh
    
por 04.03.2014 / 06:03

Tags