-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathposix.txt
More file actions
30 lines (25 loc) · 1.61 KB
/
posix.txt
File metadata and controls
30 lines (25 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
On POSIX compatibility
~~~~~~~~~~~~~~~~~~~~~~
This project is explicitly not POSIX compatible. That is, some of the tools
do not support some of POSIX-mandated arguments and/or behavior.
While it may sound like a bad thing, it's not really. It's merely irrelevant.
POSIX compatibility (specifically the stuff covered by Shell & Utilities volume)
is needed to run POSIX-compatible code. Foreign shell scripts, in this case.
Shell scripts are often system-specific, and when they aren't it's often scary
enough to wish otherwise. See autotools for examples.
What's more important however is that the system may not be fully POSIX
compatible and still be able to run the scripts it needs. The amount
of compatibility needed varies, but more often than not it's much less
than "full POSIX".
Full compatibility does not come for free either. The standard mandates a lot
of stuff that is rarely used, unnecessary complex or outright detrimental
for building small and reliable systems. Yet that stuff is necessary to call
the system "POSIX compatible". POSIX compatibility sets a lower limit on how
bloated the resulting system may be, and that limit turns out to be pretty high.
The question should never be "is it POSIX compatible?".
The right question is "does it support these commands?", in particular
use cases and with particular options. And if not, will fail destructively,
or does it provide some replacements for unsupported commands.
Minibase generally tries to provide replacement commands while also avoiding
destructive name clashes (like say "cat" command that deletes its arguments).
Non-destructive clashes are considered acceptable.