;;; preferred shell
;; /psh [<command>]
;; Like /sh, but uses ${SHELL} instead of /bin/sh to execute <command>.
;; bug: barfs on suspend (^Z) because SHELL is really a child of /bin/sh,
;; which doesn't have job control. Workaround: don't ^Z during /psh.
/loaded __TFLIB__/psh.tf
/def -i psh = \
/if ( ({#} > 0) & (SHELL !~ "") & (SHELL !~ "/bin/sh") ) \
/setenv ARGS=%*%;\
/def -i -hSHELL -1 -agG ~psh_hook = \
/echo %% Executing %{SHELL} command: %%{ARGS}%;\
/@sh exec %{SHELL} -i -c "$$ARGS"%;\
/else \
/@sh %*%;\
/endif