Hello! Paul Eggert wrote: > Bernhard Voelker wrote: > > I don't think we can remove that primary without breaking some > > scripts, so it's probably best to document it. > > I have the opposite impression. Any scripts using this confusing -a > operator are already broken, and we should phase it out. Not that > anybody actually *uses* coreutils "test -a".
I second this - but I think it's even more important that the test from coreutils and the bash builtin behave/are documented the same way. "help test" lists "-a" as file test, but when negated the bash builtin behaves different ("wronger" from my point of view) than the coreutils version (and even different from the "-e" in both implementations) - see attached output. coreutils: test ! -a file -> test ! ( -a file ) bash: test ! -a file -> test ( ! ) -a ( file ) Best regards, Martin schulte@martnix4:~/langs/sh$ cat minus-a #!/bin/bash set -o nounset file=/etc/passwd echo $BASH_VERSION /usr/bin/[ --version | head -1 for cmd in test /usr/bin/test do for op in -a -e do printf "%-30s -> " "$cmd ! $op $file" ; $cmd ! $op $file ; echo $? done done | cat -n schulte@martnix4:~/langs/sh$ ./minus-a 4.4.12(1)-release [ (GNU coreutils) 8.26 1 test ! -a /etc/passwd -> 0 2 test ! -e /etc/passwd -> 1 3 /usr/bin/test ! -a /etc/passwd -> 1 4 /usr/bin/test ! -e /etc/passwd -> 1