Scriptben én nem használnék `cd -`-t. Az csak szimplán egy `cd "$OLDPWD"` és az OLDPWD az írható változó.
~ $ cd /tmp/
/tmp $ OLDPWD=/root
/tmp $ cd -
bash: cd: /root: Engedély megtagadva
A második példádban nem is kell az OLDPWD="$PWD" sor, a `cd /bla/bla` után automatikusan be is állítja a shell (legalábbis a bash). Ha két cd parancsot adsz ki akkor máshova fog mutatni mint amire számítasz.
Akkor már inkább pushd és popd, ha a `( cd /ide; ..... )` forma nem jó valami egyéb ok miatt.