chroot環境に複数の変数と関数を渡すには?

chroot環境に複数の変数と関数を渡すには?

Arch Linuxのインストールプロセスを自動化するスクリプトを作成していますが、環境の問題が発生しました。インストール順序を含むファイルと、スクリプトの先頭から派生したすべての機能を含むファイルがあります。

実行は、arch-chroot /mnt /bin/bash -c someFunctionそのコード行の前に設定された関数や変数を認識しません。

export -f someFunction関数を認識しますが、分解someFunction関数自体である場合は、他の関数を呼び出すだけです。 chroot環境ですべての機能を取得する最もエレガントな方法は何ですか?

また、スクリプトの先頭でユーザーが設定したすべての変数をchroot環境にエクスポートする方法も必要です。 (上記の問題を解決すると、この問題も解決しそうです)

ベストアンサー1

変数をコピーせずに渡すことができました(スクリプトの外から機密変数をコピーすることはセキュリティ上危険です)。以下は一部です。

cp archsin-functions /mnt/root/;

arch-chroot /mnt /bin/bash -- << EOCHROOT

    source \$HOME/archsin-functions;

    createSwap;
    setLocale "${CITY}";
    setHost "${HSTNAME}";
    setInitramfs "${REPOAPITOKEN}" "${REPOID}";
    setUser "${USRGROUPS}" "${USRNAME}" "${USRPASSWD}" "${REPOAPITOKEN}" "${REPOID}";

    systemctl enable NetworkManager.service

EOCHROOT

shred --verbose -u --zero --iterations=3 /mnt/root/archsin-functions;

<< EOCHRROOT-トレドックchroot環境で作成された実行シェルにラインマーカーをEOCHROOT配置します。/bin/bash

ファイルを読み取ると変数拡張が行われるため、関数は変数内のデータを正しく提供します。エスケープ文字は、その行が実際に実行されるまで$拡張をブロックします。$HOME実行するとchroot環境で実行されるため、関数ファイルを含むchroot環境のフォルダを$HOME評価します。/root実行後、トレースを残さずにファイルが削除されます。

おすすめ記事