call: add `path` parameter

Add `path` parameter to call function so that users can specify the working
directory of the subprocess to invoke. This does remove some code
duplication.