cd work printf 'pwd=%s\n' "$(pwd)" printf 'upper=%s\n' "$(cat f | tr a-z A-Z)" ls *.txt | wc -l ( cd sub && pwd ) cat <<'EOF' $HOME stays literal EOF cat missing 2>/dev/null >> log cat f 2>/dev/null >> log cat log wc -l < file for f in *; do printf 'entry=%s\n' "$f"; done false || echo ok false echo $? ( cd sub && cd ../../other && pwd && cd ../work && pwd ) yes | head -n 2