Сценарии можно хранить в /usr/bin
или /usr/local/bin
(предпочтительно) или /opt
Ссылки на сценарии можно найти в ExecStart=
в служебной части файла модуля
Вам придется заставить интерпретатор игнорировать строку exec
и поместить содержимое скрипта в файл в обычном режиме. Варианты включают:
exec
написана так, что выглядит как комментарий, строка или похожа на реальный интерпретатор. Примеры :40_custom
, который идет другим путем :берет скрипт с шебангом, а затем печатает его без интерпретации. В дополнение к вариантам, которые дал муру, есть еще один вариант. В зависимости от сложности и длины скрипта, вы можете поместить скрипт внутри скрипта оболочки (будет ли он вообще полезен - это другой вопрос! )Используя механизм «здесь -документ» , вы можете встроить текст оболочки в другую программу, например:
test.sh
#!/bin/sh
exec /usr/bin/python3 <<EOF
import datetime
print("The time is now "+str(datetime.datetime.now()))
EOF
Я бы не стал использовать это, если программа очень большая, потому что такие сценарии сложнее редактировать; они встроены в другой язык, поэтому вам нужно извлечь сценарий, чтобы внести какие-либо изменения, если вы хотите их протестировать.
Как ни странно,обратите внимание, что оболочка по-прежнему расширяет переменные оболочки и интерпретирует специальные символы, используя этот метод:
#!/bin/sh
exec /usr/bin/python3 <<EOF
print("The current user is $USER and date is $(date).")
EOF
Возвращает The user is erik and date is Fri Apr 6 22:14:23 MDT 2018
.