Index: trunk/Ohana/src/opihi/cmd.basic/cd.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.basic/cd.c	(revision 7917)
+++ trunk/Ohana/src/opihi/cmd.basic/cd.c	(revision 8297)
@@ -3,6 +3,12 @@
 int cd (int argc, char **argv) {
 
-  int status;
+  int N, VERBOSE, status;
   char *cwd;
+
+  VERBOSE = TRUE;
+  if ((N = get_argument (argc, argv, "-q"))) {
+    remove_argument (N, &argc, argv);
+    VERBOSE = FALSE;
+  }
 
   if (argc != 2) {
@@ -17,5 +23,5 @@
       return (FALSE);
     }
-    gprint (GP_LOG, "cwd: %s\n", cwd);
+    if (VERBOSE) gprint (GP_LOG, "cwd: %s\n", cwd);
     ohana_memregister (cwd);
     free (cwd);
@@ -30,8 +36,16 @@
 int pwd (int argc, char **argv) {
 
-  char *cwd;
+  int N;
+  char *cwd, *var;
+
+  var = NULL;
+  if ((N = get_argument (argc, argv, "-var"))) {
+    remove_argument (N, &argc, argv);
+    var = strcreate (argv[N]);
+    remove_argument (N, &argc, argv);
+  }
 
   if (argc != 1) {
-    gprint (GP_ERR, "USAGE: pwd\n");
+    gprint (GP_ERR, "USAGE: pwd [-var variable]\n");
     return (FALSE);
   }
@@ -39,7 +53,13 @@
   if ((cwd = getcwd(NULL, 64)) == NULL) {
     gprint (GP_ERR, "error getting cwd\n");
+    if (var != NULL) free (var);
     return (FALSE);
   }
-  gprint (GP_LOG, "cwd: %s\n", cwd);
+  if (var == NULL) {
+      gprint (GP_LOG, "cwd: %s\n", cwd);
+  } else {
+      set_str_variable (var, cwd);
+      free (var);
+  }
   ohana_memregister (cwd);
   free (cwd);
