Posso ter uma shebang condicional?

6

Eu tenho um script que pode ser executado com diferentes intérpretes:

#!/usr/bin/env default-interpreter
[my script]

Mas eu gostaria de usar um alternative-interpreter , se estiver disponível, assim:

#!/usr/bin/env alternative-interpreter
[my script]

Existe uma maneira de criar um shebang que procure por alternative-interpreter e volte para default-interpreter caso o primeiro não esteja disponível?

    
por marcio 23.09.2014 / 04:53

1 resposta

3

Não diretamente, não. É melhor escrever um script de shell Bourne e shebang que:

#!/path/to/my/wrapper

e o wrapper começa com:

#!/bin/sh
for shell in first second third; do
    if /usr/bin/env "${shell}" "$@"; do exit $?; done
done
# We didn't find any of them.
exit 1

Isso permite que env (1) use a lista de busca $ {PATH} para localizar os programas, na ordem indicada no loop.

    
por 27.09.2014 / 00:17

Tags