Index: uspace/app/bdsh/compl.c
===================================================================
--- uspace/app/bdsh/compl.c	(revision 3301452e5978001613502e6996e344a35bb00627)
+++ uspace/app/bdsh/compl.c	(revision ac2caecb91eefb94c69b451795b848c23954dc79)
@@ -35,5 +35,7 @@
 #include <vfs/vfs.h>
 #include <str.h>
-
+#include <adt/odict.h>
+
+#include "scli.h"
 #include "cmds/cmds.h"
 #include "compl.h"
@@ -62,4 +64,7 @@
 	/** Length of string prefix (number of characters) */
 	size_t prefix_len;
+
+	/* Pointer to the current alias */
+	odlink_t *alias_link;
 
 	/** Pointer inside list of modules */
@@ -227,4 +232,5 @@
 	} else if (cs->is_command) {
 		/* Command without path */
+		cs->alias_link = odict_first(&alias_dict);
 		cs->module = modules;
 		cs->builtin = builtins;
@@ -305,12 +311,30 @@
 	}
 
+	/* Alias */
+	if (cs->alias_link != NULL) {
+		while (*compl == NULL && cs->alias_link != NULL) {
+			alias_t *data = odict_get_instance(cs->alias_link, alias_t, odict);
+			if (compl_match_prefix(cs, data->name)) {
+				asprintf(compl, "%s ", data->name);
+				cs->last_compl = *compl;
+				if (*compl == NULL)
+					return ENOMEM;
+			}
+			cs->alias_link = odict_next(cs->alias_link, &alias_dict);
+		}
+	}
+
 	/* Modules */
 	if (cs->module != NULL) {
 		while (*compl == NULL && cs->module->name != NULL) {
+			/* prevents multiple listing of an overriden cmd */
 			if (compl_match_prefix(cs, cs->module->name)) {
-				asprintf(compl, "%s ", cs->module->name);
-				cs->last_compl = *compl;
-				if (*compl == NULL)
-					return ENOMEM;
+				odlink_t *alias_link = odict_find_eq(&alias_dict, (void *)cs->module->name, NULL);
+				if (alias_link == NULL) {
+					asprintf(compl, "%s ", cs->module->name);
+					cs->last_compl = *compl;
+					if (*compl == NULL)
+						return ENOMEM;
+				}
 			}
 			cs->module++;
@@ -322,8 +346,12 @@
 		while (*compl == NULL && cs->builtin->name != NULL) {
 			if (compl_match_prefix(cs, cs->builtin->name)) {
-				asprintf(compl, "%s ", cs->builtin->name);
-				cs->last_compl = *compl;
-				if (*compl == NULL)
-					return ENOMEM;
+				/* prevents multiple listing of an overriden cmd */
+				odlink_t *alias_link = odict_find_eq(&alias_dict, (void *)cs->module->name, NULL);
+				if (alias_link == NULL) {
+					asprintf(compl, "%s ", cs->builtin->name);
+					cs->last_compl = *compl;
+					if (*compl == NULL)
+						return ENOMEM;
+				}
 			}
 			cs->builtin++;
@@ -373,4 +401,12 @@
 				free(ent_path);
 
+				/* prevents multiple listing of an overriden cmd */
+				if (cs->is_command && !ent_stat.is_directory) {
+					odlink_t *alias_link = odict_find_eq(&alias_dict, (void *)dent->d_name, NULL);
+					if (alias_link != NULL) {
+						continue;
+					}
+				}
+				
 				asprintf(compl, "%s%c", dent->d_name,
 				    ent_stat.is_directory ? '/' : ' ');
