git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/4] check-non-portable-shell: improve `VAR=val shell-func` detection

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 22, 2024, 21:57 UTC
Message-ID
<xmqq34o19jj1.fsf@gitster.g>
In-Reply-To
<CAO_smVhd_fWkC1=9r_ASCEPoM_rRap3DAWq--nq+6dQ8M8qzjQ@mail.gmail.com>
Kyle Lippincott <spectral@google.com> writes:
> Having just looked at the POSIX standard (I don't think I'm allowed to
> copy from this document), the POSIX standard (POSIX.1-2024, at least)
> explicitly leaves it unspecified whether the variable assignments
> remain in effect after function execution.
True.
https://pubs.opengroup.org/onlinepubs/9799919799/utilities/V3_chap02.html#tag_19_09_01_02

also says that it is unspecified if the variable gets exported, and older version of dash that comes on Ubuntu 20.04 chooses *not* to export, which was the test breakage that triggered this whole discussion. The thread can be seen here:

https://lore.kernel.org/git/xmqqbk2p9lwi.fsf_-_@gitster.g/
> Thanks for indulging my curiosity; should we include a statement in
> the linter along the lines of `# POSIX.1-2024 explicitly does not
> specify if variable assignment persists after executing a shell
> function; some shells, such as ksh, have these variables remain.`?

Giving a review (either positive or negative is fine, as long as it is constructive) on the update to CodingGuidelines

  https://lore.kernel.org/git/xmqqbk2p9lwi.fsf_-_@gitster.g/
may be a good place to start.
Thanks.
Previous: Kyle LippincottNext: Eric Sunshine
Message 17 of 37 in “improve one-shot variable detection with shell function”
  1. 0/4 improve one-shot variable detection with shell functionEric Sunshine, Jul 22, 2024
  2. 2/4 t4034: fix use of one-shot variable assignment with shell functionEric Sunshine, Jul 22, 2024
  3. 1/4 t3430: modernize one-shot "VAR=val shell-func" invocationEric Sunshine, Jul 22, 2024
  4. Phillip WoodJul 22, 2024
  5. Phillip WoodJul 23, 2024
  6. Eric SunshineJul 26, 2024
  7. Eric SunshineJul 26, 2024
  8. Junio C HamanoJul 22, 2024
  9. Eric SunshineJul 26, 2024
  10. 3/4 check-non-portable-shell: improve `VAR=val shell-func` detectionEric Sunshine, Jul 22, 2024
  11. Rubén JustoJul 22, 2024
  12. Eric SunshineJul 26, 2024
  13. Rubén JustoJul 26, 2024
  14. Kyle LippincottJul 22, 2024
  15. Junio C HamanoJul 22, 2024
  16. Kyle LippincottJul 22, 2024
  17. Junio C HamanoJul 22, 2024
  18. 4/4 check-non-portable-shell: suggest alternative for `VAR=val shell-func`Eric Sunshine, Jul 22, 2024
  19. Rubén JustoJul 22, 2024
  20. Rubén JustoJul 22, 2024
  21. 0/5 improve one-shot variable detection with shell functionEric Sunshine, Jul 26, 2024
  22. 2/5 t4034: fix use of one-shot variable assignment with shell functionEric Sunshine, Jul 26, 2024
  23. 3/5 check-non-portable-shell: loosen one-shot assignment error messageEric Sunshine, Jul 26, 2024
  24. 1/5 t3430: drop unnecessary one-shot "VAR=val shell-func" invocationEric Sunshine, Jul 26, 2024
  25. Junio C HamanoJul 26, 2024
  26. Eric SunshineJul 26, 2024
  27. 4/5 check-non-portable-shell: suggest alternative for `VAR=val shell-func`Eric Sunshine, Jul 26, 2024
  28. Rubén JustoJul 26, 2024
  29. Eric SunshineJul 26, 2024
  30. 5/5 check-non-portable-shell: improve `VAR=val shell-func` detectionEric Sunshine, Jul 26, 2024
  31. Junio C HamanoJul 26, 2024
  32. 0/5 improve one-shot variable detection with shell functionEric Sunshine, Jul 27, 2024
  33. 1/5 t3430: drop unnecessary one-shot "VAR=val shell-func" invocationEric Sunshine, Jul 27, 2024
  34. 2/5 t4034: fix use of one-shot variable assignment with shell functionEric Sunshine, Jul 27, 2024
  35. 4/5 check-non-portable-shell: suggest alternative for `VAR=val shell-func`Eric Sunshine, Jul 27, 2024
  36. 3/5 check-non-portable-shell: loosen one-shot assignment error messageEric Sunshine, Jul 27, 2024
  37. 5/5 check-non-portable-shell: improve `VAR=val shell-func` detectionEric Sunshine, Jul 27, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.