diff --git a/kshell/commands/cd.cpp b/kshell/commands/cd.cpp index f8d2668d..89f9ad00 100644 --- a/kshell/commands/cd.cpp +++ b/kshell/commands/cd.cpp @@ -36,6 +36,9 @@ void cmd_cd(const char *args) return; } + if (thisNode->Type == NodeType::SYMLINK) + thisNode = fs->GetNodeFromPath(thisNode->Symlink); + if (thisNode->Type != NodeType::DIRECTORY) { printf("cd: %s: Not a directory\n", args); diff --git a/kshell/commands/ls.cpp b/kshell/commands/ls.cpp index 9509f9da..005811f6 100644 --- a/kshell/commands/ls.cpp +++ b/kshell/commands/ls.cpp @@ -89,6 +89,9 @@ void cmd_ls(const char *args) return; } + if (thisNode->Type == NodeType::SYMLINK) + thisNode = fs->GetNodeFromPath(thisNode->Symlink); + if (thisNode->Type != NodeType::DIRECTORY) { printf("%s%s\n", ColorNodeType(thisNode), thisNode->Name);