diff --git a/jupyter_server/terminal/api_handlers.py b/jupyter_server/terminal/api_handlers.py index 99f7e91d2a..bc2d4cd3f7 100644 --- a/jupyter_server/terminal/api_handlers.py +++ b/jupyter_server/terminal/api_handlers.py @@ -1,4 +1,5 @@ import json +import os from tornado import web @@ -26,6 +27,15 @@ def post(self): """POST /terminals creates a new terminal and redirects to it""" data = self.get_json_body() or {} + # if cwd is a relative path, it should be relative to the root_dir, + # but if we pass it as relative, it will we be considered as relative to + # the path jupyter_server was started in + if "cwd" in data.keys(): + if not os.path.isabs(data["cwd"]): + cwd = data["cwd"] + cwd = os.path.join(self.settings["server_root_dir"], cwd) + data["cwd"] = cwd + model = self.terminal_manager.create(**data) self.finish(json.dumps(model))