6

У меня есть скрипт, который можно запустить с разными интерпретаторами:

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

Но я хотел бы использовать alternative-interpreter если он доступен, например:

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

Есть ли способ создать шебанг, который ищет alternative-interpreter и возвращается к default-interpreter если первый не доступен?

1 ответ1

3

Не напрямую, нет. Лучше всего написать оболочку Bourne и скрипт:

#!/path/to/my/wrapper

и оболочка начинается с:

#!/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

Это позволяет env(1) использовать список поиска $ {PATH} для поиска программ в порядке, указанном в цикле for.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .