bug-bash
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]