1

私は次のようなことをしたい:

schroot -c name -u root "export A=3 && export B=4"

しかし、私はエラーが発生します:

Failed to execute “export”: No such file or directory

つまり、schroot環境内でシェル コマンドをプログラムで実行できるようにしたいのです。この動作を取得する正しい方法は何ですか?

4

3 に答える 3

5

私はお勧め:

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()関数はデフォルトで引数を並べ替えますが、これはここでは必要ありません。は--、 の後の引数を並べ替えることを防ぎます--

于 2010-06-19T06:08:29.610 に答える
4
schroot -c name -u root -- export A=3 && export B=4

/etc/schroot/schroot.conf にあることを確認します。

run-exec-scripts=true
run-setup-scripts=true
于 2010-06-19T06:06:06.240 に答える
1

あなたは試すことができます

schroot -c name -u root "/bin/bash -c 'export A=3; export B=4'"

しかし、シュルートについて聞いたのはこれが初めてです。そして、エクスポートは役に立たないように見えます...コマンドラインから直接二重引用符で囲まれたものを実行しても、子シェルは親の環境に影響を与えたくないようです.

于 2010-06-19T05:57:14.170 に答える