I'm using cd and I'm not aware of problems.
But I am using cd in scripts that start with
#!/bin/ash
I strongly advice to separate linux code from arduino code. This means write a script that does all the linux actions and only run the script from arduino.
If 'cd' is a built-in process, it does change the current working directory, but as soon as the sub-process finiishes (after 'cd' has completed in your example) you are back where the parent process was. Write small shell script instead and do everything you have to do after cd-ing to the wanted directory. Run the script.