Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #14814
| Path | csiph.com!goblin2!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail |
|---|---|
| From | Eric Blake <eblake@redhat.com> |
| Newsgroups | gnu.bash.bug |
| Subject | Re: built-in '[' and '/usr/bin/[' yield different results |
| Date | Tue, 13 Nov 2018 11:54:29 -0600 |
| Organization | Red Hat, Inc. |
| Lines | 52 |
| Approved | bug-bash@gnu.org |
| Message-ID | <mailman.3986.1542131701.1284.bug-bash@gnu.org> (permalink) |
| References | <5b86cf1c-d39a-befc-9734-5be8abd5cddd@heinzerling.com> |
| NNTP-Posting-Host | lists.gnu.org |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | quoted-printable |
| X-Trace | usenet.stanford.edu 1542131701 11873 208.118.235.17 (13 Nov 2018 17:55:01 GMT) |
| X-Complaints-To | action@cs.stanford.edu |
| To | Service <service@heinzerling.com>, bug-bash@gnu.org, bash@packages.debian.org |
| Envelope-to | bug-bash@gnu.org |
| User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0 |
| In-Reply-To | <5b86cf1c-d39a-befc-9734-5be8abd5cddd@heinzerling.com> |
| Content-Language | en-US |
| X-Scanned-By | MIMEDefang 2.79 on 10.5.11.12 |
| X-Greylist | Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Tue, 13 Nov 2018 17:54:31 +0000 (UTC) |
| X-detected-operating-system | by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] |
| X-Received-From | 209.132.183.28 |
| X-BeenThere | bug-bash@gnu.org |
| X-Mailman-Version | 2.1.21 |
| Precedence | list |
| List-Id | Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org> |
| List-Unsubscribe | <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe> |
| List-Archive | <http://lists.gnu.org/archive/html/bug-bash/> |
| List-Post | <mailto:bug-bash@gnu.org> |
| List-Help | <mailto:bug-bash-request@gnu.org?subject=help> |
| List-Subscribe | <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe> |
| Xref | csiph.com gnu.bash.bug:14814 |
Show key headers only | View raw
On 11/13/18 10:29 AM, Service wrote: > # ensure that file1 exists and that file2 does not exist There's your problem. It is inherently ambiguous what timestamp to use when a file is missing (infinitely new or infinitely old, or always an error for not existing); bash's -nt picked one way, while other shells have picked the other. POSIX is silent on the matter (-nt is an extension outside of POSIX), so there is nothing portable you can rely on. > /bin/touch file1 > /bin/rm -f file2 > # built-in > if [ file1 -nt file2 ]; then echo nt; else echo not_nt; fi > # external > if /usr/bin/[ file1 -nt file2 ]; then echo nt; else echo not_nt; fi > > # Output is as expected: > nt > nt That is, bash's builtin '[' and coreutil's external '[' happened to pick the same thing: a missing file is treated as infinitely old. > > 2. This does not work: > > # Put the above commands into a script, say check.sh > # Run with: /bin/sh < check.sh > # Or : /bin/sh ./check.sh > # Or : /usr/bin/env ./check.sh > > # Output is always not ok: > not_nt > nt Most likely, this is because your /bin/sh is not bash, but probably dash, and dash has picked a missing file as being treated as always an error. That does not make it a bug in bash, though, but a difference in behavior of your /bin/sh. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread
Re: built-in '[' and '/usr/bin/[' yield different results Eric Blake <eblake@redhat.com> - 2018-11-13 11:54 -0600
csiph-web