Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

command -p should enable builtins not in path

Though zsh isn't meant to conform to POSIX, it should follow its
requirements when they make sense.



  The following options shall be supported:

    Perform the command search using a default value for PATH that is
    guaranteed to find all of the standard utilities.

So, in particular, the standard utility "cd" must be found. Note that
the above sentence does not mean that the utility must be somewhere
in $PATH, just that the used PATH value allows the shell to find the
utility; in case of a builtin utility (like "cd"), this will just run
the utility without needing PATH.

This works with all usual shells, except zsh:

zira% sh -c "command -p cd /tmp; pwd"
zira% bash -c "command -p cd /tmp; pwd"
zira% ksh -c "command -p cd /tmp; pwd"
zira% zsh -c "command -p cd /tmp; pwd"
zsh:1: command not found: cd
zira% echo $ZSH_VERSION

Setting the POSIX_BUILTINS option allows "cd" to be found, but with
the drawback that it will not disable builtins that are in $PATH.
So this option is a bad solution when using "zmodload zsh/files"
without -F, for instance.

Note: "command -p cd ..." is used by Intel's script to set up
environment variables for its compiler.

Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Messages sorted by: Reverse Date, Date, Thread, Author