在自定义 shell 上调试 cd 的问题

在自定义 shell 上调试 cd 的问题

我创建的自定义 shell cd 命令出现问题。现在我正在测试 cd 是唯一参数的基本情况,在这种情况下,它应该将默认目录更改为 /home 目录。它一直导致错误“ERROR Home”,所以我现在正在执行命令 cd,但它没有更改目录。


if(strcmp(command[0], "cd") == 0)
{
   int check;
   if(command[1] == NULL)
   {            
        check = chdir("/home");
        if(check != 0)
        {
           printf(" ERROR Home \n ");
        }
            
    }
    else
    {
        check = chdir(command[1]);
        if(check != 0)
        {
            printf("error command\n");
        } 
    } 
 } // end if

我是否忽略了会导致此运行时错误的某些内容?


这是更新的屏幕截图,当我尝试不同的方式输入命令时发生的情况,我在尝试执行之前添加了一条打印行以查看命令中的内容[0]。我的退出命令不起作用 cd 在此输入图像描述

答案1

chdir() 在其返回状态中告诉您错误是什么,但您没有将其放入错误消息中。阅读 perror(3) 库调用,了解如何显示友好的错误消息。

答案2

我明白了,我有一个双重 if 语句。将第二个 if 更改为 else if 并且它运行!感谢你付出的努力

相关内容