2010-06-19 4 views
1

je veux faire quelque chose comme:schroot: passer une commande à exécuter comme si elle est dans une coquille

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

mais je reçois l'erreur:

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

En d'autres termes, je veux pour pouvoir exécuter par programme des commandes shell à l'intérieur de l'environnement schroot. Quelle est la bonne façon d'obtenir ce comportement?

+0

Je pense que cette question appartient peut-être à ServerFault, pas à StackOverflow. – Omnifarious

Répondre

4

Je recommande:

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

Cela va de la coque avec l'option '-c' dire (le shell) pour lire l'argument suivant comme commande (script) à exécuter. La même technique fonctionne avec d'autres commandes analogues: 'su', 'nohup', ...

1

Vous pouvez essayer

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

mais c'est la première fois que je l'ai entendu parler de schroot. Et les exportations semblent inutiles ... même en exécutant les éléments à double guillemets directement à partir de la ligne de commande, il semble que le shell enfant ne veuille pas affecter l'environnement des parents.

+0

Je pense que la citation fonctionnerait mieux pour des commandes plus complexes si vous avez fait 'schroot -c nom -u root/bin/bash -c 'export A = 3; exporter B = 4'' à la place. – Omnifarious

+0

Peut-être. Mais comme je l'ai dit, je n'ai jamais vu schroot auparavant. Je n'étais pas sûr si la commande devait être une chaîne ou quoi. – cHao

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

Veiller à ce que /etc/schroot/schroot.conf a

run-exec-scripts=true 
run-setup-scripts=true 
Questions connexes