SublimeMerge $PATH
After adding an Open Pull Request command to Sublime Merge using the git-pr NPM package, Sublime Merge could only find git-pr when opened via the smerge binary, not Finder.
how Sublime finds its $PATH
Sublime Merge inherits its $PATH when opened from command line. When opened via Finder, Sublime finds the default shell from $SHELL and creates a login shell to find the $PATH.
We can simulate what Sublime Merge will find with the following command:
env -i "$SHELL" -l -c "env" | grep '^PATH'
Calling env -i will call our $SHELL with an empty environment. $SHELL -l will open a login shell and -c "env" will run the command, env, so we can see the environment generated by our login shell. We use grep to show just the $PATH environment variable.
login vs interactive shell
Since the shell that Sublime creates is a login shell, and not an interactive session, .zshrc won’t be loaded. This means only $PATH modifications in .zprofile or .zshenv will be found. .zshrc will be ignored.
In my case, the .volta directory that held git-pr was incorrectly added to the $PATH in ~/.zshrc, so Sublime Merge wasn’t seeing git-pr in the $PATH.
For more information on how configuration files are read by zsh, see this Stack Overflow post.
updating the $PATH for Sublime
I added Volta to my $PATH in ~/.zprofile (~/.zshenv also works) and Sublime Merge was able to find git-pr.
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"