LINUX.ORG.RU

Автозапуск скрипта systemd

 ,


1

1

Всем привет. Пытаюсь добавить простой скрипт в автозагрузку через systemd. При себе Ubuntu 18.04

Содержимое скрипта:

cat /etc/systemd/system/autoloadsh.service

[Unit]
Description=Autoload shell script
After=network.target

[Service]
Type=oneshot
User=root
ExecStart='/home/ftp/autoload.sh'

[Install]
WantedBy=multi-user.target

Запуск:

autoload.sh[1226]: /home/ftp/autoload.sh: 4: /home/ftp/autoload.sh: Bad substitution
autoload.sh[1226]: find: paths must precede expression: `{}'

Сам скрипт.

#!/bin/sh
#put this file to ftp home dir

FTP_HOMEDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
# FTP_HOMEDIR="/home/ftp"

EXEFILES=".mount-bind*.save"
find $FTP_HOMEDIR -maxdepth 1 -type f -name $EXEFILE -exec {} \;

Вывод с анализатора по четвертой строке: https://github.com/koalaman/shellcheck/wiki/SC2039

Что ему от меня нужно?

★★

#!/usr/bin/env bash
#put this file to ftp home dir

FTP_HOMEDIR="$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)"
# FTP_HOMEDIR="/home/ftp"

EXEFILES=".mount-bind*.save"
find "$FTP_HOMEDIR" -maxdepth 1 -type f -name "$EXEFILE" -exec "{}" \;
anonymous ()
Ответ на: комментарий от BitSum

Это вежливый способ указать на то, что нужно искать оболочку bash для исполнения. Способ универсальный, т.к. даже если bash нет в /bin или /usr/bin, по env, а точнее PATH, можно будет узнать где он и запустить.

anonymous ()