Есть у меня набор скриптов, расшаренный между некоторым количеством хостов (разные юниксы, винда), в т.ч. есть крон-файл, который запускает эти скрипты. Сами скрипты написаны на питоне (100% кроссверсионно), кронтаб на винде через python-crontab, команды в кронтабе совместимы и с башем, и с cmd, всё работало как часы.
Недавно один из хостов проапгрейдили до последней версии Oracle Linux, в которой хипстеры удалили исполняемый python, оставив только python с явным указанием версии. В результате у меня начали агриться шебанги /usr/bin/env python
. Для пользовательского шелла я сделал кастомную обёртку, которая определяет эту дебильную ситуацию и подставляет какой-нибудь существующий интерепретатор. Но, поскольку в кронтабе нет возможности переносимо указать окружение, хотя бы PATH (например, AIXовый кронтаб этого не умеет), то приходится изворачиваться и делать отдельный крон-файл конкретно для этого хоста.
Пробовал завести отдельный шелл-скрипт с нужным окружением, который можно будет сорсить или запускать с командой в качестве параметра, но что выбрать в качестве языка? Питон и так был самым кроссплатформенным способом.
Повершелл не подходит, он отсутствует на некоторых хостах. Perl тоже не предлагать, у него ещё больше проблем с шебангами.
UPD: Админских прав на этом хосте нет, поэтому в окружение, доступное кронтабу по умолчанию, ничего положить нельзя.
Есть ли более удобные способы решения этой проблемы?
UPD: Пока лучший вариант - bat/sh скрипт из первого коммента:
:<<@exit/b
@echo Windows stuff
@exit/b
echo Unix stuff