Как монтировать (привязывать) односторонним способом записи

Реальность находится где-то между двумя описанными вами возможностями. Bash не добавляет myvarк своей собственной среде, по крайней мере, не к полной среде оболочки, как мы обычно о ней думаем; он добавляет myvarк своей временной среде. Затем он создает среду экспорта, специально для новой команды, из временной среды вместе с текущим контекстом переменных и функциями оболочки, перед разветвлением, если это необходимо для запуска дочерней команды. Вы можете видеть это как вызовы maybe_make_export_envв исходном коде Bash . Затем временная среда очищается после запуска дочернего элемента; ищите dispose_used_env_vars.

На практике это не имеет никакого значения. Дочерняя команда получает среду, которую она должна получить, и родительская среда должна быть такой же, как только вы вернете себе управление; если вы не собираетесь вносить изменения в Bash, это все, что имеет значение.

1
23.02.2020, 14:01
1 ответ

Вы можете взглянуть на OverlayFS или в некоторых дистрибутивах все еще доступные aufs .

Вот описание OverlayFS в документации ядра Linux:

Overlay Filesystem

This document describes a prototype for a new approach to providing overlay-filesystem functionality in Linux (sometimes referred to as union-filesystems). An overlay-filesystem tries to present a filesystem which is the result over overlaying one filesystem on top of the other.

Вот рабочий пример с OverlayFS. Для этого требуются два дополнительных каталога: один для хранения постоянных изменений :все данные будут записываться туда, поэтому место на диске будет потребляться там, и пустой рабочий каталог в той же файловой системе.

Допустим, у вас есть каталоги, которые могут находиться в трех разных файловых системах, смонтированных как /fs1, /fs2и /fs3(, и все они, конечно, могут быть в одной и той же файловой системе):

/fs1/base
/fs2/delta
/fs2/work
/fs3/fork

Как описано в предыдущей ссылке, вы монтируете окончательный объединенный вид(/fs3/fork)с помощью:

mount -t overlay overlay -olowerdir=/fs1/base,upperdir=/fs2/delta,workdir=/fs2/work /fs3/fork

Вот и все. Вам придется прочитать документацию, чтобы узнать об ограничениях (, например :, когда используется NFS и т. д.)

1
28.04.2021, 23:22

Теги

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