Как я правильно связываю каталоги внутри chroot тюрьмы с помощью fstab?

Проблема из-за того, что источник выполняет файл в текущей среде. А в bash , если позиционные параметры не указаны, они не меняются. Из справочной страницы bash Bourne Shell Builtins :

. (период)

. имя_файла [аргументы]

Читать и выполнять команды из аргумент имени файла в текущем контексте оболочки. Если filename не не содержать косой черты, переменная PATH используется для поиска имени файла. Когда Bash не находится в режиме POSIX, текущий каталог ищется, если имя_файла не найдено в $ PATH. Если предоставлены какие-либо аргументы, они становятся позиционными параметрами при выполнении filename. Иначе позиционные параметры не изменились . Статус возврата - выход статус последней выполненной команды или ноль, если команды не выполняются. выполнен. Если имя файла не найдено или не может быть прочитано, возвращается статус не равен нулю. Эта встроенная функция эквивалентна исходному тексту.

POSIX определяет точку ( источник синоним точка в bash ):

Оболочка должна выполнять команды из файл в текущем среда.

Также объясняется, что версия dot для KornShell может принимать необязательные аргументы, для которых заданы позиционные параметры:

Версия точки для KornShell принимает необязательные аргументы, для которых установлено значение позиционные параметры. Это допустимое расширение, которое позволяет использовать точку сценарий, чтобы вести себя идентично функции.

Таким образом, когда вы вызываете панель исходного кода внутри функции _import , вы не предоставляете никаких позиционных параметров, поэтому они не меняются. Они идентичны области действия функции _import , $ @ содержит bar и $ # равно 1 (Потому что вы запустите _import bar ).

Когда вы вызываете исходную панель вне области действия функции _import , она идентична глобальной области (или сценарию foo ). В этом случае, поскольку вы запускаете ./ foo , вы запускаете foo без каких-либо аргументов, $ @ имеет значение null, а $ # - нуль.

1
09.11.2014, 06:19
1 ответ

у меня есть очень ограниченные знания, что монтируется - связывают , даже делает действительно, но я думаю, что, возможно, выяснил, почему я сталкиваюсь с этой проблемой с /run/mysqld в частности. Я только что заметил / работают (ранее /var/run), tmpfs, и таким образом он освобожден во время перезагрузки. Таким образом, мое предположение - то, что /run/mysqld не существует, когда /etc/fstab анализируется. Это - init-сценарий /etc/init.d/mysql , который проверяет на /run/mysqld и создает его в случае необходимости с этой строкой:

# Could be removed during boot
test -e /run/mysqld || install -m 755 -o mysql -g root -d /run/mysqld

Как обходное решение я просто добавил , монтируют-a после той строки. Я предполагаю, что у меня мог просто быть он, создают mysqld папку где угодно(?), но в / работают (или /var/run), также. Однако, если никто не может сказать мне лучше способ сделать это, я буду придерживаться этого обходного решения. Спасибо за внимание!

1
27.01.2020, 23:51

Теги

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