Index: uspace/app/bdsh/scli.c
===================================================================
--- uspace/app/bdsh/scli.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/app/bdsh/scli.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -61,6 +61,8 @@
 	usr->line = (char *) NULL;
 	usr->name = "root";
+	usr->home = "/";
 	usr->cwd = (char *) NULL;
 	usr->prompt = (char *) NULL;
+	chdir(usr->home);
 	usr->lasterr = 0;
 	return (int) cli_set_prompt(usr);
Index: uspace/app/bdsh/scli.h
===================================================================
--- uspace/app/bdsh/scli.h	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/app/bdsh/scli.h	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -7,4 +7,5 @@
 typedef struct {
 	char *name;
+	char *home;
 	char *line;
 	char *cwd;
Index: uspace/lib/libc/generic/libc.c
===================================================================
--- uspace/lib/libc/generic/libc.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/generic/libc.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -80,5 +80,4 @@
 		__stdio_init(0, NULL);
 	} else {
-		(void) chdir(__pcb->cwd);
 		argc = __pcb->argc;
 		argv = __pcb->argv;
Index: uspace/lib/libc/generic/loader.c
===================================================================
--- uspace/lib/libc/generic/loader.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/generic/loader.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -101,39 +101,4 @@
 }
 
-/** Set current working directory for the loaded task.
- *
- * Sets the current working directory for the loaded task.
- *
- * @param ldr  Loader connection structure.
- *
- * @return Zero on success or negative error code.
- *
- */
-int loader_set_cwd(loader_t *ldr)
-{
-	char *cwd;
-	size_t len;
-
-	cwd = (char *) malloc(MAX_PATH_LEN + 1);
-	if (!cwd)
-		return ENOMEM;
-	if (!getcwd(cwd, MAX_PATH_LEN + 1))
-		str_cpy(cwd, MAX_PATH_LEN + 1, "/"); 
-	len = str_length(cwd);
-	
-	ipc_call_t answer;
-	aid_t req = async_send_0(ldr->phone_id, LOADER_SET_CWD, &answer);
-	int rc = async_data_write_start(ldr->phone_id, cwd, len);
-	free(cwd);
-	if (rc != EOK) {
-		async_wait_for(req, NULL);
-		return rc;
-	}
-	
-	ipcarg_t retval;
-	async_wait_for(req, &retval);
-	return (int) retval;
-}
-
 /** Set pathname of the program to load.
  *
Index: uspace/lib/libc/generic/task.c
===================================================================
--- uspace/lib/libc/generic/task.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/generic/task.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -89,9 +89,4 @@
 		goto error;
 	
-	/* Send spawner's current working directory. */
-	rc = loader_set_cwd(ldr);
-	if (rc != EOK)
-		goto error;
-	
 	/* Send program pathname. */
 	rc = loader_set_pathname(ldr, path);
@@ -103,4 +98,5 @@
 	if (rc != EOK)
 		goto error;
+	
 	
 	/* Send default files */
Index: uspace/lib/libc/generic/vfs/vfs.c
===================================================================
--- uspace/lib/libc/generic/vfs/vfs.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/generic/vfs/vfs.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -664,6 +664,4 @@
 char *getcwd(char *buf, size_t size)
 {
-	if (!cwd_size)
-		return NULL;
 	if (!size)
 		return NULL;
Index: uspace/lib/libc/include/ipc/loader.h
===================================================================
--- uspace/lib/libc/include/ipc/loader.h	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/include/ipc/loader.h	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -41,5 +41,4 @@
 	LOADER_HELLO = IPC_FIRST_USER_METHOD,
 	LOADER_GET_TASKID,
-	LOADER_SET_CWD,
 	LOADER_SET_PATHNAME,
 	LOADER_SET_ARGS,
Index: uspace/lib/libc/include/loader/loader.h
===================================================================
--- uspace/lib/libc/include/loader/loader.h	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/include/loader/loader.h	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -49,5 +49,4 @@
 extern loader_t *loader_connect(void);
 extern int loader_get_task_id(loader_t *, task_id_t *);
-extern int loader_set_cwd(loader_t *);
 extern int loader_set_pathname(loader_t *, const char *);
 extern int loader_set_args(loader_t *, char *const[]);
Index: uspace/lib/libc/include/loader/pcb.h
===================================================================
--- uspace/lib/libc/include/loader/pcb.h	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/lib/libc/include/loader/pcb.h	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -52,7 +52,4 @@
 	/** Program entry point. */
 	entry_point_t entry;
-
-	/** Current working directory. */
-	char *cwd;
 	
 	/** Number of command-line arguments. */
Index: uspace/srv/loader/main.c
===================================================================
--- uspace/srv/loader/main.c	(revision 7c7a3209ce949bd5705f0502e78a23771a203a18)
+++ uspace/srv/loader/main.c	(revision e035612a97a6dc9b7ae6bd3dc822df045dd8afdf)
@@ -72,7 +72,4 @@
 static pcb_t pcb;
 
-/** Current working directory */
-static char *cwd = NULL;
-
 /** Number of arguments */
 static int argc = 0;
@@ -118,32 +115,4 @@
 }
 
-/** Receive a call setting the current working directory.
- *
- * @param rid
- * @param request
- */
-static void ldr_set_cwd(ipc_callid_t rid, ipc_call_t *request)
-{
-	ipc_callid_t callid;
-	size_t len;
-	
-	if (!async_data_write_receive(&callid, &len)) {
-		ipc_answer_0(callid, EINVAL);
-		ipc_answer_0(rid, EINVAL);
-		return;
-	}
-	
-	cwd = malloc(len + 1);
-	if (!cwd) {
-		ipc_answer_0(callid, ENOMEM);
-		ipc_answer_0(rid, ENOMEM);
-		return;
-	}
-	
-	async_data_write_finalize(callid, cwd, len);
-	cwd[len] = '\0';
-	
-	ipc_answer_0(rid, EOK);
-}
 
 /** Receive a call setting pathname of the program to execute.
@@ -344,6 +313,4 @@
 	elf_create_pcb(&prog_info, &pcb);
 	
-	pcb.cwd = cwd;
-	
 	pcb.argc = argc;
 	pcb.argv = argv;
@@ -439,7 +406,4 @@
 		case LOADER_GET_TASKID:
 			ldr_get_taskid(callid, &call);
-			continue;
-		case LOADER_SET_CWD:
-			ldr_set_cwd(callid, &call);
 			continue;
 		case LOADER_SET_PATHNAME:
