Bash

啟動 chroot 時使用 bash 內置 bind 命令

  • March 8, 2020

我有一個 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手冊後,我看到bindbash內置的。所以我嘗試使用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 

引用自:https://unix.stackexchange.com/questions/571155