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

Re: Z-Shell Frequently-Asked Questions (monthly posting)



> B1) Differences from sh and ksh
> ...
>   Command line substitutions, globbing etc.:

Just one addition here: foo=* assignment assigns the list of files in the
current directory as an array to foo if there are at least two matches, or if
there is a single file in the directory, foo becames a scalar whose value is
the name of that file. Other Bourne shells does not glob the right hand side
of assignments. In my releases the default behaviour is to not glob here, but
this can be changed by setting the GLOB_ASSIGN option.

>     The $((...)) version of numeric evaluation was not available before
>       version 2.6 (use $[...]).

And even in vanila 2.6 $((...)) is done after fork, hence if used as an
argument to an external program, assignments inside $((...) has no effect. Of
course this bug is also fixed in my release.

>     Treatment of backslashes within backquotes is subtly different.

I still do not know about such differences. I use zsh as /bin/sh without
probles, so there are probably no differences. Either remove that not, or give
an example.

>     $PSn do not do parameter substitution by default (use PROMPT_SUBST).

And even if PROMPT_SUBST is set, things like ${foo#*bar} does not work
properly in prompts. Thats also fixed in my release.

>   However, zsh has no claims towards Posix compliancy and will not use

Could anyone tell me how zsh differs from POSIX if invoked as sh?

There is an other thing where zsh differs from e.g. bash: characters in the
range 0x80-0x9b (or may be between 0x80-0x9f) cannot be used in scripts and
such characters in backquote or parameter substitutions are discarded (or
interpreted in a completely wrong way). That because these are used for
tokenization, hence to fix it, major parts of zsh would have to be rewritten.

>   ...
>   Of course, this makes zsh rather large and quite messy so that it

But zsh is only a little bit larger than bash or tcsh, and it seems to use
much less memory and CPU time than tcsh.

Cheers,
  Zoltan



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