chroot с указанным рабочим каталогом

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

chroot.sh <chroot-dir> <working-dir> <command> [arg]...

Моя наивная попытка:

#!/bin/sh

chroot_dir=$1
working_dir=$2

shift 2

chroot "$chroot_dir" sh -c "cd $working_dir; $*"

Но это не удается правильно обработать:

chroot.sh /path/to/chroot /tmp touch 'filename with space'

Я не могу понять, как это должно быть правильно реализовано. Возможно ли использование только bash?

В моей системе CentOS 6 команда chroot не поддерживает установку рабочего каталога. Возможно, это не так в других системах.

0
03.11.2017, 11:37
1 ответ

Наконец, я пришел к следующему решению:

#!/bin/sh

chroot_dir=$1
working_dir=$2

shift 2

printf -v CMDS " %q" "$@"

chroot "$chroot_dir" sh -c "cd \"$working_dir\";$CMDS"
0
28.01.2020, 04:37

Теги

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