diff --git a/src/mio/daemon_cage.py b/src/mio/daemon_cage.py
index bf5df16e4ed2abf303110438b4e5c90673c1cbf2..2fcc3799dc11f094249ebf08a77af66633a487c5 100755
--- a/src/mio/daemon_cage.py
+++ b/src/mio/daemon_cage.py
@@ -8,13 +8,13 @@ import subprocess
 import sys
 import time
 
-def system(command):
+def system(command, prefix):
     null = open("/dev/null")
     p = subprocess.Popen(command,
                          stdin=null,
                          stdout=subprocess.PIPE,
                          stderr=subprocess.STDOUT,
-                         cwd="/",
+                         cwd=prefix if prefix else "/",
                          close_fds=True,
                          shell=True)
     null.close()
diff --git a/src/mio/node.py b/src/mio/node.py
index 30f8eeedf5a63e020c231dbcdee502024e1bbb13..9c2a85d6502a61b897d77d81d0ba4d77aa779fcd 100755
--- a/src/mio/node.py
+++ b/src/mio/node.py
@@ -128,7 +128,7 @@ class group_node(target_node):
         log(DEBUG, "[%s].do_trig %s -> %s" % (self.name, run_pre, result))
         if result and run_pre:
             for a in self.pre:
-                a.run("pre")
+                a.run("pre", prefix)
             
         return result
 
@@ -139,7 +139,7 @@ class group_node(target_node):
         for t in self.target:
             t.install(prefix, backup)
         for a in self.post:
-            a.run("post")
+            a.run("post", prefix)
 
     def do_test(self, prefix):
         for d in self.dependency:
@@ -523,9 +523,9 @@ class command_node:
     def __init__(self, decl):
         self.decl = decl
 
-    def run(self, when):
+    def run(self, when, prefix=None):
         log(NORMAL, declaration(self), "doing '%s'" % self.decl.command[0])
-        mio.daemon_cage.system(self.decl.command[0])
+        mio.daemon_cage.system(self.decl.command[0], prefix)
 
     def test(self, when):
         log(NORMAL, declaration(self), "doing '%s'" % self.decl.command[0])
@@ -534,12 +534,13 @@ class script_node:
     def __init__(self, decl):
         self.decl = decl
 
-    def run(self, when):
+    def run(self, when, prefix):
         scripts = self.decl.scripts[0:]
         name = self.decl.script[0]
         script = mio.filecache.loadscript(self.decl._url.path, scripts, name)
         log(NORMAL, declaration(self), "running '%s'" % name)
-        mio.daemon_cage.system("%s %s %s" % (script.filename, name, when))
+        mio.daemon_cage.system("%s %s %s" % (script.filename, name, when),
+                               prefix)
 
     def test(self, when):
         dir = os.path.dirname(self.decl._url)