diff --git a/setup.py b/setup.py
index 3fe4ed89cbba08375a85fecf0905b912a907dc11..2084bf25ed6c728265e433bd07123073708354c1 100644
--- a/setup.py
+++ b/setup.py
@@ -90,6 +90,7 @@ setup(name=name,
           'proactive = slapos.recipe.proactive:Recipe',
           'request = slapos.recipe.request:Recipe',
           'sheepdogtestbed = slapos.recipe.sheepdogtestbed:SheepDogTestBed',
+          'shell = slapos.recipe.shell:Recipe',
           'symbolic.link = slapos.recipe.symbolic_link:Recipe',
           'softwaretype = slapos.recipe.softwaretype:Recipe',
           'siptester = slapos.recipe.siptester:SipTesterRecipe',
diff --git a/slapos/recipe/shell.py b/slapos/recipe/shell.py
new file mode 100644
index 0000000000000000000000000000000000000000..4dac87752923cb3db785bd2de288a8399d792839
--- /dev/null
+++ b/slapos/recipe/shell.py
@@ -0,0 +1,57 @@
+##############################################################################
+#
+# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsibility of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# guarantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 3
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+import os
+import json
+from slapos.recipe.librecipe import GenericBaseRecipe
+
+class Recipe(GenericBaseRecipe):
+
+  def install(self):
+    env = os.environ.copy()
+
+    path_list = self.options['path'].split('\n')
+    env.update(PATH=':'.join(path_list))
+    env.update(SHELL=self.options['shell'])
+    env.update(HOME=self.options['home'])
+
+    ps1 = self.options.get('ps1')
+    if ps1 is not None:
+      env.update(PS1=str(json.loads(ps1)))
+    else:
+      env.update(PS1=env.get('PS1', '> '))
+
+    wrapper = self.createPythonScript(
+      self.options['wrapper'],
+      'slapos.recipe.librecipe.execute.executee',
+      [ # Executable
+        [self.options['shell']],
+        # Environment
+        env
+      ]
+    )
+
+    return [wrapper]