Я должен программировать простую оболочку в linux, которая может реализовывать различные вещи, включая переменные окружения.Я попытался напечатать эти переменные, используя getenv
, но у меня есть некоторые проблемы.getenv
всегда возвращает NULL
, даже если пользователь вводит правильную переменную, например, $HOME
.Вот мой код
int i = 0;
if(strcmp(cmdArgv[i], "echo") == 0){
char *variable;
for(i = 1; cmdArgv[i] != NULL; i++){
variable = getenv(cmdArgv[i]);
if(!variable){
puts("not a variable");
printf("%s ", cmdArgv[i]);
}else{
puts("a variable");
printf("%s ", variable);
}
}
printf("\n");
exit(0);
}
Он не входит в условие else
.Например, если пользователь вводит echo ls $HOME
.Этот вход анализируется в cmdArgv
, который является char **
.Тогда у меня получится
not a variable
ls
not a variable
$HOME
НО $HOME
- переменная, поэтому, возможно, моя реализация getenv
не верна.Любые идеи относительно того, что кажется проблемой?Спасибо.