Bash можно вызывать различными способами, в том числе напрямую с помощью его исполняемого файла ( / bin / bash
) или ссылки на него; это часто бывает с / bin / sh
. "В противном случае" охватывает этот случай, а имя файла, используемое для вызова Bash, - это просто bash
, sh
, / bin / sh
и т. Д.
Попробуйте это, и вы увидите: bash
, затем echo $ 0
печатает bash
, / bin / bash
, затем echo $ 0
] печатает / bin / bash
и т. д.
Возможно, это также относится к шебангам, но, возможно, это первый случай.
Оказалось, что это довольно угловой случай.
Машина представляет собой Raspberry Pi, на которой работает стоковое ядро Pi, но с общим пользовательским окружением armhf Fedora 25. Она также была настроена без головы и никогда не использовалась, но при подключении монитора и клавиатуры возникла очевидная проблема с systemd-logind.service
. Я отследил это до этой проблемы, которая появилась в прошлом году, когда основные части systemd стали зависеть от seccomp, который по какой-то причине не включен в стоковое ядро Pi, но, возможно, из-за неправильной конфигурации создается впечатление, что он включен.
Решение оказалось довольно простым: нужно удалить опции служебного файла, требующие seccomp. Их несколько в /usr/lib/systemd/system
, включая systemd-logind.service
.
Это также, вероятно, оставит сеть отключенной на стоковой системе, но я использую свою собственную службу для этого, и это не повлияло (т.е. вероятность того, что кто-то еще столкнется с этой проблемой таким образом, мала).
В любом случае, я закомментировал следующие строки во всех этих файлах:
MemoryDenyWriteExecute=yes
SystemCallFilter=...
Перезагрузился, больше никаких проблем.