Date: Fri, 27 Aug 2021 09:32:29 -0400 (EDT) From: Mouse <mo...@rodents-montreal.org> Message-ID: <202108271332.jaa25...@stone.rodents-montreal.org>
| Arranging that, when sh and test are not maintained together, is | admittedly...difficult. In NetBSD's case, of course, this is less | difficult; perhaps an automated test to verify that /bin/test and the | shell builtin work the same way would be good? /bin/test and the test builtin to /bin/sh are the same source code, so if they give different results, something very odd would be happening. Edgar's question was more on what the definition of -nt should be, when the 2nd arg file does not exist. Our test defines -nt and -ot as being true only if the first arg file exists, so if we want [ X -nt Y ] to give the same result as [ Y -ot X ] in the case that one of the files does not exist, which is (aside from the case that both files have the same mod time, a desirable property) then the [ X -nt Y ] case when X exists and Y does not must be false (because [ Y -ot X ] would be false under those conditions. It is also not unreasonable to believe that a file cannot be newer than something that doesn't exist, so returning false for [ X -nt Y ] when Y does not exist is reasonable that way as well. bash uses a different definition for -ot, where it is the 2nd arg that needs to exist, instead of the first. Hence its results are different. But since no portable script can really use -nt (as it isn't standardised) I'm not sure that this is all that important. kre