Penguin
Note: You are viewing an old revision of this page. View the current version.

"POSIXLY_CORRECT" is an environment variable that some programs use to follow strict POSIX standards behaviour, where that isn't the default.

Probably the most well-known example of this is that POSIX states that filesystem blocks are 512 bytes per block, so the GNU fileutils such as df(1) and GNU tar(1) use 512 if the variable POSIXLY_CORRECT is set, and 1024 bytes per block by default.

Many of the GNU tools comply with POSIX by default, except for where the author thinks the POSIX standard is wrong or dumb :) As a result, some programs also check if a variable named "POSIX_ME_HARDER" is set as an acceptable alias for "POSIXLY_CORRECT". See http://groups.google.com/groups?selm=9108281809.AA03552%40mole.gnu.ai.mit.edu

Some programs that behave differently if POSIXLY_CORRECT is set:

  • bash(1)
  • df(1)
  • any program using getopt(3) - if POSIXLY_CORRECT is set, then getopt stops processing options after the first non-option.
  • patch(1)
  • true(1) and false(1). From the NEWS file: false and true now ignore --help and --version when POSIXLY_CORRECT is set
  • yes(1) - 'yes --help' and 'yes --version' print those strings when the POSIXLY_CORRECT environment variable is set