[dbohdan] 2015-03-11: `with-path` is to [cd] what [withOpenFile] is to [open]. ====== proc with-path {path code} { set prevPath [pwd] cd $path uplevel 1 $code cd $prevPath } ====== [DKF]: In 8.6, it might be better to do: ====== proc with-path {path code} { set prevPath [pwd] cd $path try { uplevel 1 $code } finally { cd $prevPath } } ====== [AMG]: No question about it, this is clearly a case where [try ... finally ...] is needed. This way the previous working directory is restored no matter what, plus errors generated by $code are propagated. Additionally, [DKF]'s version corrects a problem with the original: it ensures [[with-path]] returns the result of evaluating $code. <>Control Structure | Command | Concept