Bash啟動 chroot 時使用 bash 內置
啟動 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
只是一個猜測:
您正在嘗試在 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