Einen generischen Interpreter für ein Programm wie expect angeben?

Einen generischen Interpreter für ein Programm wie expect angeben?

Ich schreibe ein Expect-Skript, das auf mehreren Betriebssystemen verwendet werden kann, aber das Problem ist

ich kann nicht #!/usr/bin/expectüberall verwenden, also habe ich stattdessen versucht,

 #!`which expect`

an der Spitze, aber es scheiterte

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

irgendeine Lösung dafür.

Antwort1

Ein Trick, der meistens funktioniert (für Perl-, Python-, PHP-Interpreter und wahrscheinlich auch andere):

#!/usr/bin/env expect

Ich glaube, enves ist immer drin /usr/bin/. Viele Interpreter können mittlerweile so laufen. Es gab früher auch andere Hacks, aber sie waren nicht verständlich oder nicht so portierbar.

Antwort2

Ich schlage vor

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

Ich hoffe, das funktioniert; ich kenne die Unterschiede zwischen Bash und Sh nicht.

verwandte Informationen