帮我看看啦。。。
int my_cd(char **args) //cd test{
//home/blss/ligong/myshell/test
char dirpath[MAX_PATH];
if(args[1]) //cd myshell test
{
if(args[2])
{
printf("Error,In my_cd:more than one argument!\n");
return -1;
}
my_get_fullpath(dirpath,args[1]); //这是讲cd后面的字符串放到dirpath中
}
else
{
printf("%s\n",getenv("PWD"));
return 0;
}
int flag = chdir(dirpath); //
if(flag == -1)
{
printf("Error In my_cd: change direction fail!\n");
return -1;
}
//存在执行。。。
char *current_dir = (char *)malloc(MAX_PATH);
getcwd(current_dir,MAX_PATH); //将当前完整的工作目录名长度为MAX_PATH复制到current_dir
setenv("PWD",current_dir,1); //重新设置环境变量
free(current_dir);
current_dir = NULL;
return 0;
}
这段代码怎么实现命令的呀,我还是不太理解chdir这个函数的作用,好像在这个函数执行之后,当前的环境变量已经改变了,getcwd函数是不是将当前工作目录的绝对路径放到current_dir中,如果是这样,此时环境变量已经变了,为什么还要用setenv再设置一次环境变量?