From c4562e8778c10bef861aef88daa54a827447cc02 Mon Sep 17 00:00:00 2001 From: Lluciocc <114759545+Lluciocc@users.noreply.github.com> Date: Fri, 17 Apr 2026 11:40:11 +0200 Subject: [PATCH 1/8] Implement command history and input color updates --- src/userland/gui/terminal.c | 169 +++++++++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 4 deletions(-) diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index 0b0f6cb..7d3dbdf 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -4,6 +4,7 @@ #include #include #include "libc/libui.h" +#include "libc/input.h" #include #include @@ -19,6 +20,8 @@ #define TAB_CLOSE_PAD 6 #define MAX_TABS 4 #define TTY_READ_CHUNK 512 +#define HISTORY_MAX 64 +#define HISTORY_LINE_MAX 256 typedef struct { char c; @@ -38,12 +41,21 @@ typedef struct { int cursor_col; uint32_t fg_color; uint32_t bg_color; + uint32_t input_color; int ansi_state; int ansi_params[8]; int ansi_param_count; int saved_row; int saved_col; + + + char history[HISTORY_MAX][HISTORY_LINE_MAX]; + int history_count; + int history_index; + + char current_input[HISTORY_LINE_MAX]; + int input_len; } TerminalSession; static ui_window_t g_win; @@ -663,6 +675,16 @@ static void draw_session(TerminalSession *s) { if (ch == 0) ch = ' '; color = line[col].color; } + if (s->scroll_offset == 0 && row == s->cursor_row) { + int cmd_len = 0; + while (cmd_len < s->input_len && + s->current_input[cmd_len] != ' ') { + cmd_len++; + } + if (col < cmd_len) { + color = s->input_color; + } + } char str[2] = { ch, 0 }; int x = col * CHAR_W; int y = base_y + row * g_line_h; @@ -691,6 +713,10 @@ static void tab_init(TerminalSession *s, int tty_id, int bsh_pid) { s->ansi_param_count = 0; s->saved_row = 0; s->saved_col = 0; + s->history_count = 0; + s->history_index = 0; + s->input_len = 0; + s->current_input[0] = 0; session_reset_colors(s); scrollback_init(s); session_clear(s); @@ -778,27 +804,77 @@ static int create_tab(void) { return g_tab_count - 1; } +// checks if a command exist in /bin +static bool command_exists(const char *cmd) { + char path[256]; + + // test /bin/cmd + path[0] = 0; + str_append(path, "/bin/", sizeof(path)); + str_append(path, cmd, sizeof(path)); + + if (sys_exists(path)) return true; + + // test /bin/cmd.elf + path[0] = 0; + str_append(path, "/bin/", sizeof(path)); + str_append(path, cmd, sizeof(path)); + str_append(path, ".elf", sizeof(path)); + + if (sys_exists(path)) return true; + + return false; +} + +static void update_input_color(TerminalSession *s) { + if (s->input_len == 0) { + s->input_color = 0xFFFFFFFF; + return; + } + + char cmd[64]; + int i = 0; + + while (i < s->input_len && + s->current_input[i] != ' ' && + i < 63) { + cmd[i] = s->current_input[i]; + i++; + } + cmd[i] = 0; + + if (command_exists(cmd)) { + s->input_color = 0xFF55FF55; // green + } else { + s->input_color = 0xFFFF5555; // red + } +} + static void handle_key(gui_event_t *ev) { TerminalSession *s = &g_tabs[g_active_tab]; char c = (char)ev->arg1; bool ctrl = ev->arg3 != 0; + // create new tab with ctrl + t if (ctrl && c == 't') { int idx = create_tab(); if (idx >= 0) g_active_tab = idx; return; } - if (ctrl && c == 20) { + // switch to tab right, with ctrl + arrow right + if (ctrl && c == KEY_RIGHT) { if (g_tab_count > 0) g_active_tab = (g_active_tab + 1) % g_tab_count; return; } - if (ctrl && c == 19) { + // switch to tab left, with ctrl + arrow left + if (ctrl && c == KEY_LEFT) { if (g_tab_count > 0) g_active_tab = (g_active_tab + g_tab_count - 1) % g_tab_count; return; } + // kill the processus with ctrl + c if (ctrl && (c == 'c' || c == 'C')) { int fg = sys_tty_get_fg(s->tty_id); if (fg > 0) { @@ -811,6 +887,92 @@ static void handle_key(gui_event_t *ev) { return; } + // enter = save command + if (c == KEY_ENTER) { + if (s->input_len > 0) { + strcpy(s->history[s->history_count % HISTORY_MAX], s->current_input); + s->history_count++; + } + + s->input_color = 0xFFFFFFFF; + s->history_index = s->history_count; + s->input_len = 0; + s->current_input[0] = 0; + } + + // Storing command logic + // Backspace + else if (c == KEY_BACKSPACE) { + if (s->input_len > 0) { + s->input_len--; + s->current_input[s->input_len] = 0; + } + update_input_color(s); + } + + // Normal char + else if (c >= 32 && c < 127) { + if (s->input_len < HISTORY_LINE_MAX - 1) { + s->current_input[s->input_len++] = c; + s->current_input[s->input_len] = 0; + } + update_input_color(s); + } + + // Restoring command logic + if (c == KEY_UP) { + if (s->history_count > 0 && s->history_index > 0) { + s->history_index--; + + char *cmd = s->history[s->history_index % HISTORY_MAX]; + + // remove actual line + for (int i = 0; i < s->input_len; i++) { + char bs = 8; + sys_tty_write_in(s->tty_id, &bs, 1); + } + + strcpy(s->current_input, cmd); + s->input_len = strlen(cmd); + update_input_color(s); + + sys_tty_write_in(s->tty_id, cmd, s->input_len); + } + return; + } + + if (c == KEY_DOWN) { + if (s->history_index < s->history_count - 1) { + s->history_index++; + + char *cmd = s->history[s->history_index % HISTORY_MAX]; + + for (int i = 0; i < s->input_len; i++) { + char bs = 8; + sys_tty_write_in(s->tty_id, &bs, 1); + } + + strcpy(s->current_input, cmd); + s->input_len = strlen(cmd); + update_input_color(s); + + sys_tty_write_in(s->tty_id, cmd, s->input_len); + } + else { + // we want an empty line if we go back and nothing in history + for (int i = 0; i < s->input_len; i++) { + char bs = 8; + sys_tty_write_in(s->tty_id, &bs, 1); + } + + s->history_index = s->history_count; + s->input_len = 0; + s->current_input[0] = 0; + s->input_color = 0xFFFFFFFF; + } + return; + } + sys_tty_write_in(s->tty_id, &c, 1); } @@ -885,8 +1047,7 @@ int main(void) { draw_tabs(); draw_session(&g_tabs[g_active_tab]); } else { - // Avoid a tight poll loop when idle; sleep yields to the scheduler. - sleep(1); + sys_yield(); } } From d00eed4e13ae34d5cd54a750b11cbb437b635e60 Mon Sep 17 00:00:00 2001 From: Lluciocc <114759545+Lluciocc@users.noreply.github.com> Date: Fri, 17 Apr 2026 12:06:31 +0200 Subject: [PATCH 2/8] Refactor command input handling in terminal.c --- src/userland/gui/terminal.c | 60 +++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index 7d3dbdf..aabc1ff 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -667,24 +667,37 @@ static void draw_session(TerminalSession *s) { line_cols = g_cols; } } + + int input_start = s->cursor_col - s->input_len; + if (input_start < 0) input_start = 0; + if (input_start >= g_cols) input_start = g_cols - 1; + + // lenght of a command + int cmd_len = 0; + while (cmd_len < s->input_len && + s->current_input[cmd_len] != ' ') { + cmd_len++; + } + + int input_end = input_start + cmd_len; + if (input_end > g_cols) input_end = g_cols; + for (int col = 0; col < g_cols; col++) { char ch = ' '; uint32_t color = s->fg_color; + if (line && col < line_cols) { ch = line[col].c; if (ch == 0) ch = ' '; color = line[col].color; } + if (s->scroll_offset == 0 && row == s->cursor_row) { - int cmd_len = 0; - while (cmd_len < s->input_len && - s->current_input[cmd_len] != ' ') { - cmd_len++; - } - if (col < cmd_len) { + if (col >= input_start && col < input_end) { color = s->input_color; } } + char str[2] = { ch, 0 }; int x = col * CHAR_W; int y = base_y + row * g_line_h; @@ -826,6 +839,39 @@ static bool command_exists(const char *cmd) { return false; } +static bool command_starts_with(const char *prefix) { + if (!prefix || !prefix[0]) return false; + + FAT32_FileInfo entries[128]; + int count = sys_list("/bin", entries, 128); + if (count <= 0) return false; + + for (int i = 0; i < count; i++) { + if (entries[i].is_directory) { + continue; + } + + char name[256]; + str_copy(name, entries[i].name, sizeof(name)); + + int len = (int)strlen(name); + if (len > 4 && strcmp(name + len - 4, ".elf") == 0) { + name[len - 4] = 0; + } + + int j = 0; + while (prefix[j] && name[j] && prefix[j] == name[j]) { + j++; + } + + if (prefix[j] == 0) { + return true; + } + } + + return false; +} + static void update_input_color(TerminalSession *s) { if (s->input_len == 0) { s->input_color = 0xFFFFFFFF; @@ -845,6 +891,8 @@ static void update_input_color(TerminalSession *s) { if (command_exists(cmd)) { s->input_color = 0xFF55FF55; // green + } else if (command_starts_with(cmd)) { + s->input_color = 0xFFFFFF55; // yellow } else { s->input_color = 0xFFFF5555; // red } From 01aa75a4f1c43965c990c241f71436e59e887e61 Mon Sep 17 00:00:00 2001 From: Lluciocc Date: Sat, 18 Apr 2026 10:11:52 +0200 Subject: [PATCH 3/8] Removing ref to the history --- src/userland/gui/terminal.c | 95 ++----------------------------------- 1 file changed, 5 insertions(+), 90 deletions(-) diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index aabc1ff..8f3439a 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -19,9 +19,8 @@ #define TAB_CLOSE_W 12 #define TAB_CLOSE_PAD 6 #define MAX_TABS 4 -#define TTY_READ_CHUNK 512 -#define HISTORY_MAX 64 -#define HISTORY_LINE_MAX 256 +#define TTY_READ_CHUNK 512T +#define LINE_MAX 256 typedef struct { char c; @@ -48,13 +47,9 @@ typedef struct { int ansi_param_count; int saved_row; int saved_col; - - char history[HISTORY_MAX][HISTORY_LINE_MAX]; - int history_count; - int history_index; - - char current_input[HISTORY_LINE_MAX]; + // for color + char current_input[LINE_MAX]; int input_len; } TerminalSession; @@ -726,8 +721,7 @@ static void tab_init(TerminalSession *s, int tty_id, int bsh_pid) { s->ansi_param_count = 0; s->saved_row = 0; s->saved_col = 0; - s->history_count = 0; - s->history_index = 0; + s->input_len = 0; s->current_input[0] = 0; session_reset_colors(s); @@ -935,91 +929,12 @@ static void handle_key(gui_event_t *ev) { return; } - // enter = save command if (c == KEY_ENTER) { - if (s->input_len > 0) { - strcpy(s->history[s->history_count % HISTORY_MAX], s->current_input); - s->history_count++; - } - s->input_color = 0xFFFFFFFF; - s->history_index = s->history_count; s->input_len = 0; s->current_input[0] = 0; } - // Storing command logic - // Backspace - else if (c == KEY_BACKSPACE) { - if (s->input_len > 0) { - s->input_len--; - s->current_input[s->input_len] = 0; - } - update_input_color(s); - } - - // Normal char - else if (c >= 32 && c < 127) { - if (s->input_len < HISTORY_LINE_MAX - 1) { - s->current_input[s->input_len++] = c; - s->current_input[s->input_len] = 0; - } - update_input_color(s); - } - - // Restoring command logic - if (c == KEY_UP) { - if (s->history_count > 0 && s->history_index > 0) { - s->history_index--; - - char *cmd = s->history[s->history_index % HISTORY_MAX]; - - // remove actual line - for (int i = 0; i < s->input_len; i++) { - char bs = 8; - sys_tty_write_in(s->tty_id, &bs, 1); - } - - strcpy(s->current_input, cmd); - s->input_len = strlen(cmd); - update_input_color(s); - - sys_tty_write_in(s->tty_id, cmd, s->input_len); - } - return; - } - - if (c == KEY_DOWN) { - if (s->history_index < s->history_count - 1) { - s->history_index++; - - char *cmd = s->history[s->history_index % HISTORY_MAX]; - - for (int i = 0; i < s->input_len; i++) { - char bs = 8; - sys_tty_write_in(s->tty_id, &bs, 1); - } - - strcpy(s->current_input, cmd); - s->input_len = strlen(cmd); - update_input_color(s); - - sys_tty_write_in(s->tty_id, cmd, s->input_len); - } - else { - // we want an empty line if we go back and nothing in history - for (int i = 0; i < s->input_len; i++) { - char bs = 8; - sys_tty_write_in(s->tty_id, &bs, 1); - } - - s->history_index = s->history_count; - s->input_len = 0; - s->current_input[0] = 0; - s->input_color = 0xFFFFFFFF; - } - return; - } sys_tty_write_in(s->tty_id, &c, 1); } From 75c3e4c27a76f18f8e7c5d4bad1b007e6a378d91 Mon Sep 17 00:00:00 2001 From: Lluciocc Date: Sun, 19 Apr 2026 00:35:30 +0200 Subject: [PATCH 4/8] Adding a argument in bshrc to enable/disable terminal color --- src/library/bsh/bshrc | 2 +- src/userland/gui/terminal.c | 43 +++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/library/bsh/bshrc b/src/library/bsh/bshrc index 3e988bc..bd92990 100644 --- a/src/library/bsh/bshrc +++ b/src/library/bsh/bshrc @@ -42,4 +42,4 @@ HISTORY_SIZE=200 GLOB=true COMPLETE=true SUGGEST=true - +TERMINAL_COLOR=false diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index 8f3439a..a39931e 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -19,7 +19,7 @@ #define TAB_CLOSE_W 12 #define TAB_CLOSE_PAD 6 #define MAX_TABS 4 -#define TTY_READ_CHUNK 512T +#define TTY_READ_CHUNK 512 #define LINE_MAX 256 typedef struct { @@ -48,6 +48,8 @@ typedef struct { int saved_row; int saved_col; + bool colors_enabled; + // for color char current_input[LINE_MAX]; int input_len; @@ -726,6 +728,19 @@ static void tab_init(TerminalSession *s, int tty_id, int bsh_pid) { s->current_input[0] = 0; session_reset_colors(s); scrollback_init(s); + + char value[64]; + + if (read_config_value("TERMINAL_COLOR", value, sizeof(value)) == 0) { + if (strcmp(value, "1") == 0 || strcmp(value, "true") == 0) { + s->colors_enabled = true; + } else { + s->colors_enabled = false; + } + } else { + s->colors_enabled = false; + } + session_clear(s); } @@ -867,6 +882,10 @@ static bool command_starts_with(const char *prefix) { } static void update_input_color(TerminalSession *s) { + if (!s->colors_enabled) { + return; + } + if (s->input_len == 0) { s->input_color = 0xFFFFFFFF; return; @@ -876,12 +895,12 @@ static void update_input_color(TerminalSession *s) { int i = 0; while (i < s->input_len && - s->current_input[i] != ' ' && - i < 63) { + s->current_input[i] != ' ' && + s->current_input[i] != '\t' && + i < 63) { cmd[i] = s->current_input[i]; i++; } - cmd[i] = 0; if (command_exists(cmd)) { s->input_color = 0xFF55FF55; // green @@ -929,6 +948,22 @@ static void handle_key(gui_event_t *ev) { return; } + if (!ctrl) { + if (c == KEY_BACKSPACE) { + if (s->input_len > 0) { + s->input_len--; + s->current_input[s->input_len] = 0; + } + } else if (c >= 32 && c < 127) { + if (s->input_len < LINE_MAX - 1) { + s->current_input[s->input_len++] = c; + s->current_input[s->input_len] = 0; + } + } + + update_input_color(s); + } + if (c == KEY_ENTER) { s->input_color = 0xFFFFFFFF; s->input_len = 0; From 992aad52e5cc520af1c39af9b8f307117872f117 Mon Sep 17 00:00:00 2001 From: Lluciocc Date: Sun, 19 Apr 2026 00:45:41 +0200 Subject: [PATCH 5/8] Fixing yellow color not showing --- src/userland/gui/terminal.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index a39931e..54b93b4 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -901,6 +901,7 @@ static void update_input_color(TerminalSession *s) { cmd[i] = s->current_input[i]; i++; } + cmd[i] = 0; if (command_exists(cmd)) { s->input_color = 0xFF55FF55; // green From 750880dcb5751d27cd1d5595eac4726034e89c68 Mon Sep 17 00:00:00 2001 From: Lluciocc Date: Mon, 20 Apr 2026 10:09:39 +0200 Subject: [PATCH 6/8] Adding support for multiple PATH --- src/userland/gui/terminal.c | 159 ++++++++++++++++++++++++++++-------- 1 file changed, 125 insertions(+), 34 deletions(-) diff --git a/src/userland/gui/terminal.c b/src/userland/gui/terminal.c index 54b93b4..343dbbe 100644 --- a/src/userland/gui/terminal.c +++ b/src/userland/gui/terminal.c @@ -430,30 +430,70 @@ static void get_tab_title(TerminalSession *s, char *out, int max_len) { static int read_config_value(const char *key, char *out, int max_len) { if (!key || !out || max_len <= 0) return -1; + int fd = sys_open("/Library/bsh/bshrc", "r"); if (fd < 0) return -1; char buf[4096]; int bytes = sys_read(fd, buf, sizeof(buf) - 1); sys_close(fd); + if (bytes <= 0) return -1; buf[bytes] = 0; char *line = buf; + while (*line) { char *end = line; while (*end && *end != '\n' && *end != '\r') end++; + char saved = *end; *end = 0; trim_end(line); + if (line[0] != '#' && line[0] != 0) { char *sep = line; + while (*sep && *sep != '=') sep++; + if (*sep == '=') { *sep = 0; - if (strcmp(line, key) == 0) { - str_copy(out, sep + 1, max_len); + + char *k = line; + + // skip leading spaces + while (*k == ' ' || *k == '\t') k++; + + // skip "export " + if (strncmp(k, "export ", 7) == 0) { + k += 7; + } + + // skip spaces again after export + while (*k == ' ' || *k == '\t') k++; + + // trim end of key + char *kend = k + strlen(k) - 1; + while (kend > k && (*kend == ' ' || *kend == '\t')) { + *kend = 0; + kend--; + } + + if (strcmp(k, key) == 0) { + char *val = sep + 1; + + // skip leading spaces + while (*val == ' ' || *val == '\t') val++; + + // remove " + if (*val == '"') { + val++; + char *vend = strchr(val, '"'); + if (vend) *vend = 0; + } + + str_copy(out, val, max_len); return 0; } } @@ -826,24 +866,69 @@ static int create_tab(void) { return g_tab_count - 1; } -// checks if a command exist in /bin +static int parse_path(char paths[][128], int max_paths) { + char path_line[256]; + + if (read_config_value("PATH", path_line, sizeof(path_line)) != 0) { + str_copy(path_line, "/bin", sizeof(path_line)); + } + + if (path_line[0] == '"') { + memmove(path_line, path_line + 1, strlen(path_line)); + char *end = strchr(path_line, '"'); + if (end) *end = 0; + } + + int count = 0; + int start = 0; + + for (int i = 0;; i++) { + if (path_line[i] == ':' || path_line[i] == ';' || path_line[i] == 0) { + int len = i - start; + + if (len > 0 && count < max_paths) { + if (len >= 128) len = 127; + + memcpy(paths[count], &path_line[start], len); + paths[count][len] = 0; + count++; + } + + start = i + 1; + } + + if (path_line[i] == 0) break; + } + + return count; +} + static bool command_exists(const char *cmd) { - char path[256]; - - // test /bin/cmd - path[0] = 0; - str_append(path, "/bin/", sizeof(path)); - str_append(path, cmd, sizeof(path)); + if (!cmd || !cmd[0]) return false; - if (sys_exists(path)) return true; + char paths[16][128]; + int path_count = parse_path(paths, 16); - // test /bin/cmd.elf - path[0] = 0; - str_append(path, "/bin/", sizeof(path)); - str_append(path, cmd, sizeof(path)); - str_append(path, ".elf", sizeof(path)); + char full[256]; - if (sys_exists(path)) return true; + for (int i = 0; i < path_count; i++) { + // folder/cmd + full[0] = 0; + str_append(full, paths[i], sizeof(full)); + if (full[strlen(full) - 1] != '/') str_append(full, "/", sizeof(full)); + str_append(full, cmd, sizeof(full)); + + if (sys_exists(full)) return true; + + // folder/cmd.elf + full[0] = 0; + str_append(full, paths[i], sizeof(full)); + if (full[strlen(full) - 1] != '/') str_append(full, "/", sizeof(full)); + str_append(full, cmd, sizeof(full)); + str_append(full, ".elf", sizeof(full)); + + if (sys_exists(full)) return true; + } return false; } @@ -851,30 +936,36 @@ static bool command_exists(const char *cmd) { static bool command_starts_with(const char *prefix) { if (!prefix || !prefix[0]) return false; + char paths[16][128]; + int path_count = parse_path(paths, 16); + FAT32_FileInfo entries[128]; - int count = sys_list("/bin", entries, 128); - if (count <= 0) return false; - for (int i = 0; i < count; i++) { - if (entries[i].is_directory) { - continue; - } + for (int p = 0; p < path_count; p++) { + int count = sys_list(paths[p], entries, 128); + if (count <= 0) continue; - char name[256]; - str_copy(name, entries[i].name, sizeof(name)); + for (int i = 0; i < count; i++) { + if (entries[i].is_directory) continue; - int len = (int)strlen(name); - if (len > 4 && strcmp(name + len - 4, ".elf") == 0) { - name[len - 4] = 0; - } + char name[256]; + str_copy(name, entries[i].name, sizeof(name)); - int j = 0; - while (prefix[j] && name[j] && prefix[j] == name[j]) { - j++; - } + int len = strlen(name); - if (prefix[j] == 0) { - return true; + // remove .elf + if (len > 4 && strcmp(name + len - 4, ".elf") == 0) { + name[len - 4] = 0; + } + + int j = 0; + while (prefix[j] && name[j] && prefix[j] == name[j]) { + j++; + } + + if (prefix[j] == 0) { + return true; + } } } From 65d5fc974fa4f6bf82c2636cb4b88fd0c30a390b Mon Sep 17 00:00:00 2001 From: Lluciocc Date: Mon, 20 Apr 2026 10:18:01 +0200 Subject: [PATCH 7/8] Fix for color when the config is at false --- src/library/bsh/bshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/bsh/bshrc b/src/library/bsh/bshrc index bd92990..6bec96a 100644 --- a/src/library/bsh/bshrc +++ b/src/library/bsh/bshrc @@ -5,7 +5,7 @@ # Lines starting with # are comments. # # PATH controls command lookup order (colon-separated). -export PATH="/bin" +export PATH="/bin:/example/bin" # Scripts to run automatically. # STARTUP runs for interactive shells. From 016f6dad1588da87e7fe809f8305a41f2879afd6 Mon Sep 17 00:00:00 2001 From: Lluciocc <114759545+Lluciocc@users.noreply.github.com> Date: Mon, 20 Apr 2026 12:23:21 +0200 Subject: [PATCH 8/8] Update bshrc --- src/library/bsh/bshrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/library/bsh/bshrc b/src/library/bsh/bshrc index 6bec96a..bd92990 100644 --- a/src/library/bsh/bshrc +++ b/src/library/bsh/bshrc @@ -5,7 +5,7 @@ # Lines starting with # are comments. # # PATH controls command lookup order (colon-separated). -export PATH="/bin:/example/bin" +export PATH="/bin" # Scripts to run automatically. # STARTUP runs for interactive shells.