https://www.gnu.org/home.en.html#More-GNU
I often wonder why Microsoft doesn't just bite the bullet and adopt Linux as the kernel for Windows.
I recommend this book from Ha-Joon Chang that has a nice chapter on that (a very pleasant read with references): http://www.amazon.com/Things-They-Dont-About-Capitalism/dp/1...
Evolutionarily speaking, it seems likely that depression/anxiety are there for some purpose, and yet we treat them both like meaningless pain meant only to be banished using drugs. I believe both are signals that something in our environment is not working for us. They indicate emotional or physical needs unmet---needs for safety, autonomy, connection, etc.
Often the individual suffering is fundamentally unaware of their own circumstances. I didn't realize how messed up my family relationships were growing up until much later. There are various reasons for this unawareness, but I believe the depression/anxiety are there to force our conscious self and the people around us to acknowledge that something is wrong.
This isn't just the old nonsense about depressed people needing to cheer up, and that it will pass in a day. This is a completely different paradigm that explains depression and anxiety as meaningful signals of underlying problems rather than as inexplicable suffering to be numbed through prescription medication. I believe it will prove the more robust and also the wiser way of looking at these experiences.
Also, an unquoted variable that happens to be null will essentially vanish from the argument list of any command it's used with, which can cause another class of weird bugs. Consider the shell statement:
if [ -n $var ]; then
... which looks like it should execute the condition if $var is nonblank, but in fact will execute it even if $var is blank (the reason is complex, I'll leave it as a puzzle for the reader).
Setting IFS is a crutch that only partly solves the problem; putting double-quotes around variable references fully solves it.
In this case
[ -n $var ]
is the same as test -n $var
$var is not quoted, so when this command is run, word splitting occurs and therefore $var is null. Which there falls into the one argument rule above.Therefore, always quote your variables.