[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Worth mentioning in documentation
From: |
Pádraig Brady |
Subject: |
Re: Worth mentioning in documentation |
Date: |
Sat, 24 Jun 2017 15:13:29 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
On 10/08/15 05:55, Eric Blake wrote:
> On 08/10/2015 02:18 AM, Juanma wrote:
>
>> Here is another point I find confusing: I thought a "shell builtin" didn't
>> have a separate binary executable file, like 'cd' (which cd => fail),
>
> Actually, POSIX requires that there be a separate 'cd' binary, although
> it does not have to behave the same as the shell builtin. (About all an
> exec'able cd can do is tell you by exit status whether the builtin cd
> would succeed or fail; or be used for its CDPATH side-effect of printing
> a directory name).
>
> GNU/Linux systems tend to ignore the POSIX requirement of exec'able
> counterparts, although here is how Solaris effectively does it:
>
> $ cat /bin/cd
> #!/bin/sh
> exec $(basename $0) "$@"
> $
>
> and hard-linking that 2-liner to all of the shell builtins where POSIX
> requires to have a non-builtin counterpart.
>
> See also http://austingroupbugs.net/view.php?id=705
>
> It is only the special builtins (such as 'exit') where POSIX does not
> require an exec'able counterpart.
For the record I see this on Fedora 25
$ rpm -q bash
bash-4.3.43-4.fc25.x86_64
$ rpm -ql bash | grep /bin/ | grep -v bash
/usr/bin/alias
/usr/bin/bg
/usr/bin/cd
/usr/bin/command
/usr/bin/fc
/usr/bin/fg
/usr/bin/getopts
/usr/bin/hash
/usr/bin/jobs
/usr/bin/read
/usr/bin/sh
/usr/bin/type
/usr/bin/ulimit
/usr/bin/umask
/usr/bin/unalias
/usr/bin/wait
$ cat /usr/bin/cd
#!/bin/sh
builtin cd "$@"
cheers,
Pádraig
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Worth mentioning in documentation,
Pádraig Brady <=