启动 chroot 时使用 bash 内置 `bind` 命令

启动 chroot 时使用 bash 内置 `bind` 命令

我有一个 chroot,我希望 chroot.inputrc在启动时有自己的文件,然后运行程序。

我习惯用 chroot 启动chroot <PATH> <PROGRAM_TO_RUN>所以我尝试了

chroot <PATH> bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN> 

但后来我收到错误:

chroot: failed to run command ‘bind’: No such file or directory

阅读readline手册后我发现bind这是一个bash内置的。所以我尝试使用builtin像这样运行命令:

chroot <PATH> builtin bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN> 

但得到了同样的错误:

chroot: failed to run command ‘builtin’: No such file or directory

&&我知道通过chroot一起运行两个程序,因为我测试过:

~# chroot <PATH> echo "yo" && echo "Hi"
yo
Hi
~#

我还知道该bind命令和builtin命令在 chroot 中独立工作:

~# chroot <PATH> bash
/# builtin -h
bash: builtin: -h: invalid option
builtin: usage: builtin [shell-builtin [arg ...]]
/# builtin bind -h
bash: bind: -h: invalid option
bind: usage: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]
/# bind -h
bash: bind: -h: invalid option
bind: usage: bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]

如何在命令bind中运行该命令以便为 chrootchroot设置自定义?.inputrc

答案1

只是一个猜测:

您正尝试在 chroot 中运行 Bash 内置命令,如下所示:

chroot <PATH> bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN>

但是你的 chroot 没有运行任何解释器,它可以理解bind.做了以下工作:

chroot <PATH> bash -c "bind -f <PATH_IN_CHROOT>/.inputrc && <PROGRAM_TO_RUN>"

PS
如前所述@mosvy,首先作为答案,然后作为评论,您可以通过调用 chroot 来传递环境:

INPUTRC=/path/to/inputrc chroot <jail> bash 

相关内容