One-shot "FOO=bar cmd" environment variable assignments exist only during invocation of 'cmd'. However, if 'cmd' is a shell function, then the variable is assigned in the running shell and exists until the process exits (or is unset explicitly). Such a side-effect is almost certainly unintended by a test author and is likely due to lack of familiarity with the problem. Upgrade "make test-lint" to detect this sort of suspect usage. Also fix a couple instances of "FOO=bar shell_func" detected by the improved linting. This series is built atop 'jc/t3404-one-shot-export-fix'[1]. [1]: https://public-inbox.org/git/xmqqefg8w73c.fsf@xxxxxxxxxxxxxxxxxxxxxxxxx/T/ Eric Sunshine (4): t6046/t9833: fix use of "VAR=VAL cmd" with a shell function t/check-non-portable-shell: stop being so polite t/check-non-portable-shell: make error messages more compact t/check-non-portable-shell: detect "FOO=bar shell_func" t/check-non-portable-shell.pl | 31 +++++++++++++++++++++----- t/t6046-merge-skip-unneeded-updates.sh | 4 +++- t/t9833-errors.sh | 4 +++- 3 files changed, 32 insertions(+), 7 deletions(-) -- 2.18.0.233.g985f88cf7e