pode bash “source” um shell de intérprete personalizado?

0

é bem sabido que o bash irá executar um "script" com um não-bash intérprete na linha she-bang (por exemplo, "#! / bin / cat")

o que parece não funcionar (pelo menos na primeira tentativa), é incluir scripts interpretados sob medida em scripts bash apropriados, usando a origem ou os comandos de ponto, isto é algo como

#! /bin/bash; echo these are the terms; source terms.cat

com terms.cat intérprete sendo #! /bin/cat

Alguém encontrou uma maneira de fazer algo semelhante (ou é certo isso não pode ser feito?)

(por favor não me responda como resolver o exemplo inventado; eu sei como; minha situação real é muito mais complexa; o exemplo apenas transmite a ideia)

    
por giKarr 02.06.2017 / 13:35

1 resposta

2

O comando source é explicitamente destinado a carregar scripts como se fossem parte do script principal. Pense nisso como C #include ou PHP require() .

Isso significa que o conteúdo desse arquivo também deve ser um script bash válido. O Bash não se importará com #! headers nem pedirá ao kernel que se preocupe com eles; ele apenas lê o arquivo diretamente e passa por cima deles como se fossem comentários regulares.

Em outras palavras, se você quiser o #! linha a ser honrada, o seu script principal terá que executar diretamente esse arquivo como um comando.

(Ou diga perl para executá-lo. O Perl tenta ser útil e gera o intérprete correto para você.)

    
por 02.06.2017 / 15:46

Tags