Cd does rember the cd c:\gcc and you can do c:
and it jump to c:\gcc not tested in reactos yet. but cd have other bugs that need to be fix.
Modified: trunk/reactos/subsys/system/cmd/internal.c

Modified: trunk/reactos/subsys/system/cmd/internal.c
--- trunk/reactos/subsys/system/cmd/internal.c	2005-07-19 01:36:54 UTC (rev 16638)
+++ trunk/reactos/subsys/system/cmd/internal.c	2005-07-19 01:55:16 UTC (rev 16639)
@@ -271,7 +271,7 @@
 	if (!dir || !dir[0])
 	{
 		TCHAR szPath[MAX_PATH];
-
+    
 		GetCurrentDirectory (MAX_PATH, szPath);
 		ConOutPuts (szPath);
 		return 0;
@@ -290,7 +290,7 @@
 		TCHAR szPath[MAX_PATH];
 
 		szRoot[0] = _totupper (dir[0]);
-		GetFullPathName (szRoot, MAX_PATH, szPath, NULL);
+		GetRootPath (szRoot, szPath,MAX_PATH);
 
 		/* PathRemoveBackslash */
 		if (_tcslen (szPath) > 3)
@@ -314,6 +314,7 @@
 	lpOldPath = (LPTSTR)malloc (MAX_PATH * sizeof(TCHAR));
 	GetCurrentDirectory (MAX_PATH, lpOldPath);
 
+  chdir(dir);
 	if (!SetCurrentDirectory (dir))
 	{
 
@@ -338,6 +339,7 @@
             {
 			  FindClose(hSearch);		     
 	          // change folder
+        chdir(dir);
 			 if (!SetCurrentDirectory (FileData.cFileName))
 			 {
 				 ConOutFormatMessage(GetLastError());
@@ -377,6 +379,7 @@
 		GetCurrentDirectory(MAX_PATH, dir);
 		if (dir[0]!=lpOldPath[0])
 		{
+      chdir(lpOldPath);
 			SetCurrentDirectory(lpOldPath);
 			free(lpOldPath);
 		}