Я пишу шелл. В задании нужно чтобы после каждого запуска других программ через мой шелл устанавливалось значение переменной $?. И что то я не понимаю как это сделать? Эту переменную сама система устанавливать будет или я должен как то ручками прописывать ее значение?
Для правильного вопроса надо знать половину ответа
$? - это статус завершения последней программы.
В C соответствует значению, возвращаемому функцией main. Нормальное завершение программы должно возвращать 0, каждая ошибка обычно соответствует своему коду.
exit 0 в конце main()
завершение main приводит к завершению программы (в общем случае). а выходное значение main помещается в переменную статуса $? https://man7.org/linux/man-pages/man1/bash.1.html Special Parameters