Как Linux определяет что средства использовать для выполнения (нетекст) двоичного файла?

Необходимо удалить %{ и %} со всей части ПОДСКАЗКИ, которая печатает рабочий каталог.

PROMPT='%(?..%F{red}%?%f:)%F{blue}%n%f:%F{green}${PWD/#$HOME/~} %(!.%F{red}.%f)%# %f'

%{ и %} последовательности предназначены, чтобы быть помещенными вокруг битов подсказки, которые не влияют на положение курсора (например, трудно кодированная управляющая последовательность). Окружают что-то, что на самом деле перемещает курсор (путем печати текущего рабочего каталога), Вы путаете понятие zsh того, где курсор; когда это должно перерисовать часть текущей строки (например, когда Вы используете C-r для поиска), это заканчивает тем, что поместило курсор в неправильное местоположение.

Можно проверить это путем изменения на каталог с более долгим печатным представлением: если Вы cd /tmp, затем курсор будет неуместен на 4 столбца (длина /tmp) вместо 1 (длина ~).


Кроме того, можно обычно использовать %~ вместо ${PWD/#$HOME/~} включать текущий рабочий каталог. Соответственно, если бы это было Вашей единственной заменой, то Вы могли бы затем выключить PROMPT_SUBST.

23
31.05.2015, 18:47
1 ответ

Одним словом: binfmt_misc. Это подсистема, специфичная для Linux, не портативная.

Есть пара форматов, которые распознаются ядром со встроенной логикой. А именно, это формат ELF (для обычных двоичных файлов) и соглашение Shebang (для сценариев). (спасибо zwol за следующую часть ответа). Кроме того, Linux распознает пару эзотерических, устаревших или совместимых встроенных форматов. Скорее всего, вы с ними не столкнетесь. Это a.out, "em86", "flat" и "elf_fdpic".

Все остальное должно быть зарегистрировано через систему binfmt_misc. Эта система позволяет зарегистрировать в ядре простую проверку паттерна на основе магического числа и соответствующего интерпретатора.

29
27.01.2020, 19:42

Теги

Похожие вопросы