シェルを書くのは初めてです。追加の引数を指定しない場合、「cd」でホームディレクトリに移動しようとしています。
しかし、「cd」を呼び出してコードを実行しようとするとchdir(getenv("HOME"))、エラー メッセージが表示されます"No such file or directory"。
/*
Builtin function implementations.
*/
int cd(char **args){
if (args[1] == NULL){
printf("%s\n", getenv("HOME"));
if (chdir(getenv("HOME")) != 0) {
perror("dsh");
}
} else if (chdir(args[1]) != 0){
perror("dsh");
}
return 1;
}
getenv("HOME")正しいディレクトリを提供します。つまり、"/Users/oasisweng"
私は何か間違ったことをしたと思います。どこを修正すればよいですか?できれば理由を教えてください。
ここで chdir man を読みましたが、手動で入力cd /Users/oasiswengすると機能します。
ありがとうございました!!