Использование этого скрипта в качестве acme.sh
#!/bin/bash
echo "$*"
с программой, указанной в том же каталоге, возникает ошибка, о которой вы сообщаете
Однако, если я добавлю текущий каталог в оболочку PATH
export PATH=.:$PATH
Затем программа выполняется, как и ожидалось, в случае моей версии
$ go run c.go
combined out:
--issue --dns -d exmaple.com --yes-I-know-dns-manual-mode-enough-go-ahead-please
Хорошо, это тот случай, когда bash -c принимает в качестве команды одну строку (подробнее об этом чуть позже)
Если команда выдается так
cmd := exec.Command("acme.sh", "--issue", "--dns", "-d exmaple.com", "--
yes-I-know-dns-manual-mode-enough-go-ahead-please")
Затем, после того как последний отредактирует ваше состояние вопроса, команда acme.sh запускается без аргументов.
Проблема в том, как ведет себя bash -c
.
со справочной страницы
bash интерпретирует следующие параметры, когда
вызывается:
-c If the -c option is present, then commands are read from the
first non-option argument command_string. If there are argu‐
ments after the command_string, they are assigned to the
positional parameters, starting with $0.
В вашем случае это означает, что первый аргумент bash -c
принимается как команда. Другие аргументы теряются, поскольку они являются позиционными аргументами для новой оболочки bash, а не для команды acme.sh
См. Это для более подробной информации о bash -c
https://unix.stackexchange.com/questions/144514/add-arguments-to-bash-c
Наконец, что бы я сделал в этой ситуации: пропустите "bash" "-c"
, убедитесь, что сценарий имеет правильную строку взрыва, и положитесь на обработчик ядра binfmt