Я пишу скрипт, в котором у меня есть функция, которая запускает команды как root. Это делается для того, чтобы он мог использовать sudo, doas или su в зависимости от того, что установил пользователь. Функция выглядит примерно так:
as_root() {
# $SU_CMD contains either sudo, doas --, or nothing
if [[ -n $SU_CMD ]]; then
$SU_CMD $@
else
su root -- $@
fi
}
Это не работает, если ни sudo, ни doas не доступны. Вместо того, чтобы выполнять команду как root, su root -- <command>
записывает /usr/bin/<command>: /usr/bin/<command>: cannot execute binary file
в терминал. Я также пробовал su -c "$@"
среди других комбинаций, но без игры в кости.
Как мне go выполнить аргументы функции bash как root, используя su?