In reply to Jim Barbour.

I found that and X statement (e.g. X "cd /tmp") doesn't have the desired result because future X statements launch a new shell and revert back to the original working directory. Jim's example works by sending two commands each time, effectively this means you'd have to change the working directory every time the pipe or X statement or pipe is executed. For those looking for a command that affects everything - future pipes, X statement, and the SAS session, I ended up using a call system statement. It seems this actually affects the current session instead of only a shell sub-process. E.g.:
data _null_;
call system('cd /tmp');
run;