私は次のようなことをしたい:
schroot -c name -u root "export A=3 && export B=4"
しかし、私はエラーが発生します:
Failed to execute “export”: No such file or directory
つまり、schroot環境内でシェル コマンドをプログラムで実行できるようにしたいのです。この動作を取得する正しい方法は何ですか?
私はお勧め:
schroot -c name -u root sh -c "export A=3 && export B=4"
またはそれ以上:
schroot -c name -u root -- sh -c "export A=3 && export B=4"
これは、実行するコマンド (スクリプト) として次の引数を読み取るようシェル (シェル) に指示する「-c」オプションを使用してシェルを実行します。同じ手法が他の類似コマンドでも機能します: 「su」、「nohup」、...
この--
オプションは への引数を終了しschroot
、コマンド ラインの残りのオプションが、 ではなく、シェルに渡されて解釈されるようにしschroot
ます。これはSR_がコメントで提案したもので、 のマニュアル ページでschroot
も使用する必要があることが示唆されています (「セパレーター」を検索してください)。GNUgetopt()
関数はデフォルトで引数を並べ替えますが、これはここでは必要ありません。は--
、 の後の引数を並べ替えることを防ぎます--
。
schroot -c name -u root -- export A=3 && export B=4
/etc/schroot/schroot.conf にあることを確認します。
run-exec-scripts=true
run-setup-scripts=true
あなたは試すことができます
schroot -c name -u root "/bin/bash -c 'export A=3; export B=4'"
しかし、シュルートについて聞いたのはこれが初めてです。そして、エクスポートは役に立たないように見えます...コマンドラインから直接二重引用符で囲まれたものを実行しても、子シェルは親の環境に影響を与えたくないようです.