Especificando um interpretador genérico para um programa como o esperado?

Especificando um interpretador genérico para um programa como o esperado?

Estou escrevendo um script esperado que pode ser usado em vários sistemas operacionais, mas o problema é

não posso usar #!/usr/bin/expectem todos os lugares, então tentei fazer

 #!`which expect`

no topo, mas falhou

[sesiv@itseelm-lx4151 ~]$ ./sendcommand
-bash: ./sendcommand: `which: bad interpreter: No such file or directory

alguma solução para isso.

Responder1

Um truque que funciona principalmente (para interpretadores perl, python, php e provavelmente outros):

#!/usr/bin/env expect

Eu acho envque está sempre na moda /usr/bin/. Muitos intérpretes podem funcionar dessa maneira agora. Outros hacks existiam, mas não eram compreensíveis ou não eram tão portáteis.

Responder2

Eu sugiro

#!/bin/sh
expect_path="$(which expect)"
"$expect_path" "$0" "$@"

Eu espero que isso funcione; Não estou familiarizado com as diferenças entre bash e sh.

informação relacionada