Como determinar se o script é chamado pelo shell interativo ou outro script?

0

É bastante simples determinar a partir de um script que o código que está sendo executado não está sendo executado em um shell interativo , mas você já sabe que, à medida que escreve o script, não sei como é útil, exceto dentro de uma função (ou se você fonte o script).

Dentro de um script, como você determina se o script está sendo executado a partir de um shell interativo ou sendo executado por outro script? Em outras palavras, como você determina a interatividade do chamador do script? Dito de outra forma, como você sabe se o shell parent é interativo ou não?

Só para esclarecer ainda mais, não estou tentando encontrar o nome do antepassado interativo mais próximo , estou apenas tentando descobrir se o pai imediato é interativo ou não.

Se isso varia de shell para shell, estou mais interessado em zsh, mas também em bash.

    
por iconoclast 01.07.2016 / 17:23

1 resposta

0

Se o script começar com #!/path , o kernel inicia um novo shell não relacionado.

Se o script contiver apenas comandos shell, os forks do shell receberão um erro ENOEXEC , redefinirá todos os sinalizadores para seus padrões e, em seguida, o filho bifurcado executará o script.

Então você não pode, exceto quando você poderia usar algo semelhante a getppid () e verificar a tabela de processos.

    
por 01.07.2016 / 17:48