Если убунта новая - то сделай из него systemd модуль. Тебе нужен тип one-shot, т.е. который выполняется и завершается, а не работает постоянно.
Вот приблизительный пример. Допустим, файл называется foo.service
[Unit]
#человекочитаемое описание
Description=Setup foo
[Service]
Type=oneshot
#это путь к скрипту, который будет выполняться разово при запуске сервиса
ExecStart=/opt/foo/setup-foo.sh
#если ExecStart отработал, сервис считается активным
RemainAfterExit=true
#это путь к скрипту, который будет выполняться разово при остановке сервиса
ExecStop=/opt/foo/teardown-foo.sh
StandardOutput=journal
[Install]
#когда запускать скрипт при загрузке - когда готовы выполняться от имени пользователей, или когда сеть есть, или ещё когда.
WantedBy=multi-user.target
Создав файл, не забудь сделать
systemctl daemon-reload чтобы systemd подцепил изменения.
А чтобы срабатывало при загрузке -
systemctl enable foo.service. Если назвал файл иначе, поправь последний аргумент.
Если твои скрипты не отмечены как испоняемые, или не имеют в первой строке #!/bin/bash, то тогда надо изменить строки ExecStart/ExecStop так:
ExecStart=/bin/bash /opt/foo/setup-foo.sh