[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] How to make sure always run external command instead of
From: |
Dennis Williamson |
Subject: |
Re: [Help-bash] How to make sure always run external command instead of builtin function? |
Date: |
Mon, 3 Dec 2018 21:19:05 -0600 |
On Mon, Dec 3, 2018, 8:51 PM Peng Yu <address@hidden wrote:
> On Mon, Dec 3, 2018 at 5:22 PM Bob Proulx <address@hidden> wrote:
> >
> > Eric Blake wrote:
> > > Peng Yu wrote:
> > > > I currently use this to make sure to always run the external command.
> > > > Is it the best way to do so? Thanks.
> > > >
> > > > "$(type -P cmd)" arg1 arg2
> > >
> > > env cmd arg1 arg2
> > > also works
> >
> > There is also another way too:
> >
> > (exec cmd ...)
> >
> > As I learned just the other day:
> >
> > http://lists.gnu.org/archive/html/bug-bash/2018-09/msg00104.html
> > http://lists.gnu.org/archive/html/bug-bash/2018-09/msg00101.html
> >
> > Bob
> >
>
> This is good. (exec cmd) is faster.
>
> $ ./main_ls.sh
> time for ((i=0;i<300;++i))
> do
> (exec ls)
> done > /dev/null
>
> real 0m2.231s
> user 0m0.677s
> sys 0m1.013s
>
> time for ((i=0;i<300;++i))
> do
> "$(type -P ls)"
> done > /dev/null
>
> real 0m2.742s
> user 0m0.830s
> sys 0m1.352s
> $ cat main_ls.sh
> #!/usr/bin/env bash
> # vim: set noexpandtab tabstop=2:
>
> set -v
> time for ((i=0;i<300;++i))
> do
> (exec ls)
> done > /dev/null
>
> time for ((i=0;i<300;++i))
> do
> "$(type -P ls)"
> done > /dev/null
>
>
> --
> Regards,
> Peng
>
You didn't time the env version.
>