Does typing "cd" with no arguments need to take you to the home directory?
No. You can assume "cd" will always be given arguments
Does "cd" need to handle ".." and "."?
No. "cd" will only be given paths - but these paths may be relative!
Is the main routine having no return type standard practice in C?
I can find no reference to this - thus you can assume that, just like C++, having the main routine return that status (as an int) is just as valid and common as using exit() and is perhaps the cleaner solution.
Do we have to use git?
No, git is just one of several OPTIONAL collaboration tools you can use when working on a project with a team. You do not have to use any of them.
Can we use global variables?
You can use any technique you like that is not forbidden on the writeup, however if this leads to messy code you may lose points for that.
What is the relationship between a child process and its parent?
The child process has a completely seperate address space and is not strongly linked to the parent. The parent has some control over its child (mostly through signals) but the two are not inseperably linked.
Do environment variables have to be capitalized?
No, but they are case sensitive. HOME != HoME. There are no clear restrictions on the caseness of environment variables, however by convention, envvars with lower case letters are not used by system utilities. From opengroup: "The name space of environment variable names containing lower-case letters is reserved for applications. Applications can define any environment variables with names from this name space without modifying the behaviour of the standard utilities. "