'system ("cd")' on Windows will change your processes directory.
The same 'system ("cd")' on Linux won't. "System()" spawns a subshell ... the subshell changes directory (leaving the parent process unaffected) ... and when "system()" exits, the parent's directory is precisely the same as before. 'system ("cd")' is effectively a no-op on Linux.
Osor is correct in discouraging you from trying "user.dir".
Here's a good explanation about why Java works the way it does:
http://www.devx.com/tips/Tip/13804