Index: uspace/app/bdsh/cmds/modules/alias/alias.c
===================================================================
--- uspace/app/bdsh/cmds/modules/alias/alias.c	(revision 60c332e0091e18001ab53fa1843c29ac947ba9ae)
+++ uspace/app/bdsh/cmds/modules/alias/alias.c	(revision 4bf08aa512815ac35c14e6bcb1f9fc1f7f23642a)
@@ -21,20 +21,6 @@
 
 static const char *cmdname = "alias";
-static const char* alias_format = "%s/%s";
+static const char* alias_format = "%s='%s'\n";
 
-
-/*
-#include <types/adt/odict.h>
-extern void odict_initialize(odict_t *, odgetkey_t, odcmp_t);
-extern void odict_finalize(odict_t *);
-extern void odlink_initialize(odlink_t *);
-extern void odict_insert(odlink_t *, odict_t *, odlink_t *);
-extern void odict_remove(odlink_t *);
-
-extern odlink_t *odict_first(odict_t *);
-extern odlink_t *odict_next(odlink_t *, odict_t *);
-extern odlink_t *odict_find_eq(odict_t *, void *, odlink_t *);
-extern errno_t odict_validate(odict_t *);
-*/
 
 
@@ -51,4 +37,5 @@
 }
 
+
 static int print_alias(const char* name)
 {
@@ -62,11 +49,33 @@
 
 
-	printf("No alias with the name '%s' exists", name);
+	printf("%s: No alias with the name '%s' exists\n", cmdname, name);
 	return CMD_FAILURE;
 }
 
+
 static void set_alias(const char* name, const char* value)
 {
-	
+	odlink_t *alias_link = odict_find_eq(&alias_dict, (void*)name, NULL);
+
+	if (alias_link != NULL) {
+		//update existing value
+		alias_t* data = odict_get_instance(alias_link, alias_t, odict);
+		free(data->value);
+		data->value = str_dup(value);
+
+		printf("%s: update value ", cmdname);
+	}else {
+		//add new value
+		alias_t* data = (alias_t*)calloc(1, sizeof(alias_t));
+		data->name = str_dup(name);
+		data->value = str_dup(value);
+
+		odict_insert(&data->odict, &alias_dict, NULL);
+
+
+		printf("%s: insert value ", cmdname);
+	}
+
+	printf(alias_format, name, value);
 }
 
@@ -78,6 +87,5 @@
 void help_cmd_alias(unsigned int level)
 {
-	printf("This is the %s help for '%s'.\n",
-		level ? EXT_HELP : SHORT_HELP, cmdname);
+	printf("Set a new alias with \"alias hex='cat --hex'\". Display an alias with \"alias hex\". List all alias by passing no argument.\n");
 	return;
 }
@@ -87,23 +95,32 @@
 {
 	
-	if (argv[0] == NULL) {
+	if (argv[1] == NULL) {
 		list_aliases();
 		return CMD_SUCCESS;
-	}else if (argv[1] == NULL && strpos(argv[0], "=") == -1) {
-		return print_alias(argv[0]);
+	}else if (argv[2] == NULL && str_chr(argv[1], '=') == NULL) {
+		return print_alias(argv[1]);
 	}
-
-
+	
+	//concat all it together
 	char* str = (char*)malloc(INPUT_MAX * sizeof(char));
 	str[0] = '\0';
 
 	size_t i;
-	for(i = 0; argv[i] != NULL; i++) {
-		str = strcat(str, argv[i]);
+	for (i = 1; argv[i] != NULL; i++) {
+		str_append(str, INPUT_MAX - 1, argv[i]);
 	}
 
-	
-	
-	set_alias(name, value);
+	//split input
+	char* pos = str_chr(str, '=');
+	if(pos == NULL) {
+		printf("%s: bad formatted input\n", cmdname);
+		return CMD_FAILURE;
+	}
+
+
+	str[pos - str] = '\0';
+	set_alias(str, pos + 1);
+
+	free(str);
 	return CMD_SUCCESS;
 }
Index: uspace/app/bdsh/input.c
===================================================================
--- uspace/app/bdsh/input.c	(revision 60c332e0091e18001ab53fa1843c29ac947ba9ae)
+++ uspace/app/bdsh/input.c	(revision 4bf08aa512815ac35c14e6bcb1f9fc1f7f23642a)
@@ -171,4 +171,22 @@
 	}
 
+
+
+	/* test if the passed cmd is an alias 
+	odlink_t *alias_link = odict_find_eq(&alias_dict, (void *)&v, NULL);
+	e = odict_get_instance(alias_link, test_entry_t, alias_dict);
+	if() {
+		char* oldLine = usr->line;
+
+
+		//reprocess input after string replace
+		rc = process_input(usr);
+		usr->line = oldLine;
+		goto finit;
+	}
+	
+	*/
+
+
 	iostate_t new_iostate = {
 		.stdin = stdin,
@@ -219,4 +237,5 @@
 		usr->line = (char *) NULL;
 	}
+
 	tok_fini(&tok);
 	free(tokens_buf);
Index: uspace/app/bdsh/scli.c
===================================================================
--- uspace/app/bdsh/scli.c	(revision 60c332e0091e18001ab53fa1843c29ac947ba9ae)
+++ uspace/app/bdsh/scli.c	(revision 4bf08aa512815ac35c14e6bcb1f9fc1f7f23642a)
@@ -61,8 +61,13 @@
 const char *progname = PACKAGE_NAME;
 
-static int alias_cmp(void* a, void* b) {
+static int alias_cmp(void* a, void* b)
+{
 	return str_cmp((char*)a, (char*)b);
 }
 
+static void* alias_key(odlink_t *odlink)
+{
+	return (void*)odict_get_instance(odlink, alias_t, odict)->name;
+}
 
 /* These are not exposed, even to builtins */
Index: uspace/app/bdsh/scli.h
===================================================================
--- uspace/app/bdsh/scli.h	(revision 60c332e0091e18001ab53fa1843c29ac947ba9ae)
+++ uspace/app/bdsh/scli.h	(revision 4bf08aa512815ac35c14e6bcb1f9fc1f7f23642a)
@@ -60,5 +60,4 @@
 extern odict_t alias_dict;
 
-extern void* alias_key(odlink_t *odlink);
 
 typedef struct {
