mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-12-28 16:15:02 +01:00
5c513aa33f
Don't need KSH_TYPESET even in emulation. integer and float should be parsed the same way in case of arguments that will be evaluated as expressions.
1118 lines
48 KiB
Text
1118 lines
48 KiB
Text
-------------------------------------
|
|
CHANGES FROM PREVIOUS VERSIONS OF ZSH
|
|
-------------------------------------
|
|
|
|
Note also the list of incompatibilities in the README file.
|
|
|
|
Changes from 5.0.8 to 5.0.9
|
|
---------------------------
|
|
|
|
The builtins declare, export, local, readonly and typeset
|
|
now have corresponding reserved words. When used in
|
|
this form, the builtin syntax is extended so that assignments
|
|
following the reserved word are treated similarly to
|
|
assignments that appear at the start of the command line.
|
|
For example,
|
|
local scalar=`echo one word` array=(several words)
|
|
creates a local "scalar" containing the text "one word"
|
|
and an array "array" containing the words "several"
|
|
"words".
|
|
|
|
Changes from 5.0.0 to 5.0.8
|
|
---------------------------
|
|
|
|
- Global aliases can be created for syntactic tokens such as command
|
|
separators (";", "&", "|", "&&", "||"), redirection operators, etc.
|
|
Use at your own risk! The POSIX_ALIASES option is interpreted more
|
|
strictly to prevent expansion of these and other alias names containing
|
|
quotes, glob metacharacters, parameter references, etc.
|
|
|
|
- There have been various further improvements to builtin handling
|
|
with the POSIX_BUILTINS option (off by default) for compatibility with
|
|
the POSIX standard.
|
|
|
|
- 'whence -v' is now more informative, and 'whence -S' shows you
|
|
how a full chain of symbolic links resolves to a command.
|
|
|
|
- The 'p' parameter flag now allows an argument to be specified
|
|
as a reference to a variable, e.g. ${(ps.$sep.)foo} to split $foo
|
|
on a string given by $sep.
|
|
|
|
- The option FORCE_FLOAT now forces variables, not just constants,
|
|
to floating point in arithmetic expressions.
|
|
|
|
- The type of an assignment in arithmetic expressions, e.g. the
|
|
type seen by the variable res in $(( res = a = b )), is now
|
|
more logical and C-like.
|
|
|
|
- The default binding of 'u' in vi command mode has changed to undo
|
|
multiple changes when invoked repeatedly. '^R' is now bound to redo
|
|
changes. To revert to toggling of the last edit use:
|
|
bindkey -a u vi-undo-change
|
|
|
|
- Compatibility with Vim has been improved for vi editing mode. Most
|
|
notably, Vim style text objects are supported and the region can be
|
|
manipulated with vi commands in the same manner as Vim's visual mode.
|
|
|
|
- Elements of the watch variable may now be patterns.
|
|
|
|
- The logic for retrying history locking has been improved.
|
|
|
|
- Some rationalisations have been made to the zsh/db/gdbm module that
|
|
should make it more useful and predictable in operation.
|
|
|
|
- Numeric constants encountered in mathematical expressions (but not other
|
|
contexts) can contain underscores as separators that will be ignored on
|
|
evaluation, as allowed in other scripting languages. For example,
|
|
0xFFFF_FFFF, or 3.141_592_654. From 5.0.6 this is also available
|
|
in output, e.g.
|
|
setopt cbases
|
|
zmodload zsh/mathfunc
|
|
print $(( [#16_4] 2**32 - 1 )) $(( [#_3] 4 * atan(1.0) ))
|
|
|
|
- "functions -T" turns on tracing for the specified function(s) only,
|
|
similar to "functions -t" except that tracing is turned off for any
|
|
functions called from the specified one(s) that don't also have the -t
|
|
or -T flag.
|
|
|
|
- The option FORCE_FLOAT has been added to force all arithmetic constants
|
|
to be treated as floating point. This is most useful locally within
|
|
functions or scripts performing floating point calculations.
|
|
|
|
- The default $fpath/$FPATH is now designed to include
|
|
/usr/local/share/zsh/site-functions unless the installer has
|
|
specifically decided to use another path, i.e. regardless of
|
|
the standard installation location. This directory does not need to
|
|
exist. Sites that set an explicit site directory can put that in
|
|
/etc/zshenv as before. The intention of the new path element is to
|
|
increase the likelihood that locally added functions can be found with
|
|
the shell running "out of the box", unless the shell has been
|
|
deliberately configured differently by the installer for some special
|
|
purpose.
|
|
|
|
- Individual pattern characters can be disabled. For example, to allow '^'
|
|
to be an ordinary character even if the option EXTENDED_GLOB is set, use
|
|
"disable -p '^'".
|
|
|
|
- The variable editing builtin vared can be given custom editing widgets
|
|
for initialisation and finishing.
|
|
|
|
- The line editor's capability for listening on file descriptors
|
|
additional to the terminal has been enhanced so that the handler for
|
|
such file descriptors can be a line editor widget. Previously the
|
|
handler always behaved as a standard shell function.
|
|
|
|
- Hooks for adding history (the function zshaddhistory and the
|
|
array zshaddhistory_functions) can return status 2 to indicate that
|
|
history is to be saved internally within the shell but not written.
|
|
|
|
- In file completion, the recursive-files style can be set to an array of
|
|
patterns to match against "$PWD/". In any matched location, it is
|
|
possible to complete files in arbitrarily deep subdirectories without
|
|
needing to type the directory prefix. See example in the zshcompsys
|
|
manual.
|
|
|
|
- The _user_expand completer now allows expansion functions in the
|
|
user-expand files to return a string in REPLY that will be used to name
|
|
the set of expansions returned.
|
|
|
|
- The parameter HISTORY_IGNORE may be set to a pattern which matches
|
|
lines in the internal history that are to be omitted from the history
|
|
file at file write time. This differs from history changes made in
|
|
the zshaddhistory hook or by the HIST_IGNORE_* options, all of which
|
|
take effect immediately on the internal history list itself.
|
|
|
|
- The parameter ZLE_RPROMPT_INDENT can be set to 0 to remove the space
|
|
before the right hand side of the screen (this causes problems with
|
|
some terminals). It is not special and is not set by default; the
|
|
effect in that case is as if it was 1, as in previous versions.
|
|
|
|
- If the option EXTENDED_GLOB is in effect, it is possible to force
|
|
globbing within conditional code using the [[ ... ]] syntax by flagging
|
|
that a certain string is a glob using the (#q) glob qualifier syntax.
|
|
The resulting glob is treated as a single argument. For example,
|
|
[[ -n *.c(#qN) ]] tests whether there are any .c files in the current
|
|
directory.
|
|
|
|
- In prompt strings, the %N(l.true.false) conditional (line length) and
|
|
the %N<..< and %N>..> truncation operators now accept negative values
|
|
of N, which count the remaining space to the opposite margin (positive
|
|
values of N still count the space used since the start of the prompt).
|
|
In PS1 and PROMPT, this counts to the right margin, whereas in RPS1 and
|
|
RPROMPT, it counts to the left margin (not to the opposite prompt).
|
|
|
|
- Also in prompt strings, %e or the equivalent test %(e..) are used to
|
|
output or test the execution / evaluation depth of a shell
|
|
construct within functions etc. This is useful in $PS4.
|
|
|
|
- Another new prompt feature is the %. escape within time strings, for
|
|
example %D{%H:%M:%S.%.}. It provides zero-padded decimal fractions of a
|
|
second; by default milliseconds are shown, but the number of digits may
|
|
be indicated from 1 to 6, e.g. "%6.". (Note this is part of the
|
|
extensions to strftime() formats rather than basic prompt escapes.)
|
|
|
|
- The operators :^ and :^^ in parameter substitution allow for array
|
|
zipping in the form ${name:^array}. With the :^ operator, all entries
|
|
in $name and $array will be output in alternating order. With :^ the
|
|
longer array is trimmed whereas the :^^ operator repeats the shorter
|
|
array enough to match the longer array.
|
|
|
|
- The value of $? when a job becomes stopped is now the signal number plus
|
|
128, for compatibility with other shells. Note that different operating
|
|
systems use different values e.g. for SIGTSTP, so it is not possible in
|
|
portable scripts to detect stopped jobs by comparing to a fixed number.
|
|
Also, the value of $pipestatus is now updated when a job stops, not just
|
|
when it exits.
|
|
|
|
- Redirections applied to function definitions take effect when the
|
|
function is executed, not when it is defined. Other shells already
|
|
work this way. For example,
|
|
fn() { echo hello } >~/logfile
|
|
Running fn writes "hello" to logfile. In older versions of the shell
|
|
it would create an empty file at the point of definition.
|
|
|
|
Changes between 4.2 and 5.0.0
|
|
-----------------------------
|
|
|
|
The following changes first appeared in the 4.3 series of releases;
|
|
see also the file Etc/NEWS-4.3.
|
|
|
|
Here is a summary of the most significant changes:
|
|
|
|
- Multibyte characters strings are supported throughout the shell.
|
|
Various options, editor features, and expansion flags have been
|
|
added to aid in using them.
|
|
|
|
- The following new options have appeared: COMBINING_CHARS,
|
|
DEBUG_BEFORE_CMD, HASH_EXECUTABLES_ONLY, HIST_FCNTL_LOCK,
|
|
HIST_LEX_WORDS, HIST_SAVE_BY_COPY, MULTIBYTE, NO_MULTI_FUNCDEF,
|
|
PATH_SCRIPT, POSIX_ALIASES, POSIX_CD, POSIX_JOBS, POSIX_STRINGS,
|
|
POSIX_TRAPS, PROMPT_SP, SOURCE_TRACE.
|
|
|
|
- Highlighting and colouring of the command line is supported.
|
|
|
|
- Job control is supported in non-interactive shells and subshells.
|
|
|
|
- The zshroadmap manual page provides a slightly more helpful
|
|
introduction to the shell manual than was previously available.
|
|
|
|
- There have been some notable enhancements to POSIX comptability
|
|
when the shell is in a corresponding emulation (e.g. "emulate sh").
|
|
|
|
Expansion (parameters, globbing, etc.) and redirection
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
- The character group tests [[:IDENT:]], [[:IFS:]], [[:IFSSPACE:]],
|
|
[[:WORD:]] in patterns allow testing if a character can be
|
|
part of an identifier, is an IFS character, is an IFS whitespace
|
|
character, or is considered part of the word using the line editor's
|
|
logic based on the shell variable WORDCHARS.
|
|
|
|
- In extended globbing, "(#cN,M)" means "match the preceding group
|
|
at least N but no more than M times".
|
|
|
|
- The glob qualifier P can be used with an argument to add an extra
|
|
word before each glob match.
|
|
|
|
- The syntax ~[...] provides dynamic directory naming by means
|
|
of the shell function zsh_directory_name or associated hook functions.
|
|
This is useful for expanding paths with many variable components as
|
|
commonly found in software development.
|
|
|
|
- Parameter substitution has the ${NAME:OFFSET} and ${NAME:OFFSET:LENGTH}
|
|
syntax for compatibility with other shells (and zero-based indexing
|
|
is used to enhance compatibility). LENGTH may be negative to count
|
|
from the end.
|
|
|
|
- The arbitrary limit on parameter subscripts (262144) has been removed.
|
|
As it was not configurable and tested in an inconvenient place it
|
|
was deemed preferable to remove it completely. The limit was originally
|
|
introduced to prevent accidental creation of a large parameter array
|
|
by typos that generated assignments along the lines of "12345678=0".
|
|
The general advice is not to do that.
|
|
|
|
- The parameter substitution flag (D) abbreviates directories in parameters
|
|
using the familiar ~ form.
|
|
|
|
- The parameter substitution flag (g) can take delimited arguments o, e and
|
|
c to provide echo- and print-style expansion: (g::) provides basic
|
|
echo-style expansion; (g:e:) provides the extended capabilities of
|
|
print; (g:o:) provides octal escapes without a leading zero; (g:c:)
|
|
additionally expands "^c" style control characters as for bindkey.
|
|
Options may be combined, e.g. (g:eoc:).
|
|
|
|
- The parameter substitution flag (m) indicates that string lengths used
|
|
calculated by the (l) and (r) flags or the # operator should take
|
|
account of the printing width of characters in multibyte mode, whether
|
|
0, 1 or more. (mm) causes printing characters to count as 1 and
|
|
non-printing chracters to count as 0.
|
|
|
|
- The parameter substitution flag (q-) picks the most minimal way of
|
|
quoting the parameter words, to make the result as readable as possible.
|
|
|
|
- The parameter substitution flag (Z), a variant of (z), takes arguments
|
|
describing how to split a variable using shell syntax: (Z:c:) parses
|
|
comments as strings (the default is not to treat comment characters
|
|
specially); (Z:C:) parses comments and strips them; (Z:n:) treats
|
|
newlines as ordinary whitespace (the default is to turn unquoted
|
|
newlines into semicolons; this is now documented).
|
|
|
|
- The parameter subscript flag (e) forces the argument to be treated
|
|
as a string, never a pattern, e.g. ${array[(ie)*]} looks for the
|
|
index of the array element containing the literal string "*".
|
|
|
|
- The operators :| and :* in parameter substitution allow for array
|
|
subtraction and intersection in the form ${name:|array}. With the :|
|
|
operator, all entries in $name that are also in $array will be removed
|
|
from the substitution. Conversely for the :* operation only the
|
|
entries that are in both arrays will be substituted.
|
|
|
|
- Numeric expansions can have a positive or negative step
|
|
e.g. "{3..9..2}". Negative start and end of ranges are also now
|
|
supported.
|
|
|
|
- =(<<<...) is optimised to eliminate the need for an external process.
|
|
It writes the given string to a file and substitutes the name on the
|
|
command line.
|
|
|
|
- The redirection operations "{myfd}>file" and "{myfd}>&-" open and
|
|
close a new file descriptor (at least 10) contained in the shell
|
|
variable myfd, which can be written to with ">&$myfd". This allows
|
|
arbitrary file descriptors rather than the explicit range 0 to 9.
|
|
|
|
- New prompt escapes:
|
|
%x and %I show source file and line number, useful in $PS4 (the
|
|
existing %N and %i show names and lines in the execution environment
|
|
rather than the source file).
|
|
%F, %K, %f, %k allow colouring of prompts both using ANSI colour names
|
|
and values supported by individual terminal emulators.
|
|
|
|
Builtins and shell functions
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
- Directory-changing builtins take an option -q to suppress side
|
|
effects such as printing directories or calling the chpwd hook functions.
|
|
|
|
- Various enhancements have been made to traps:
|
|
- The option DEBUG_BEFORE_CMD is on by default, so DEBUG traps
|
|
can be used to debug code about to be run
|
|
- $ZSH_DEBUG_CMD in such a trap gives the code to be run
|
|
- "setopt ERR_EXIT" in a DEBUG trap causes the code not to be executed
|
|
|
|
- The "fc" builtin is now more useful non-interactively.
|
|
|
|
Shell variables (parameters)
|
|
-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
- New variables:
|
|
CORRECT_IGNORE can be set to a pattern to be ignored in spelling correction.
|
|
KEYBOARD_HACK defines characters to be ignored if typed unmatched at
|
|
the end of the line (an extension of the SUN_KEYBOARD_HACK option,
|
|
but note that setting the option will override the variable).
|
|
ZSH_PATCHLEVEL provides a unique indication of the code compiled to
|
|
make the shell, even between releases.
|
|
ZSH_SUBSHELL indicates the subshell level, incremented once per fork, at
|
|
which the code is being run.
|
|
|
|
Options
|
|
-+-+-+-
|
|
|
|
- New options:
|
|
COMBINING_CHARS: assume that the terminal displays combining
|
|
characters correctly. The shell cannot determine this by itself,
|
|
hence the option. This is highly recommended for MacOS X where
|
|
file names are stored with accented characters split into basic
|
|
and combining characters.
|
|
DEBUG_BEFORE_CMD (on by default): execute debug traps before the
|
|
code they refer to. This is a change of the default behaviour
|
|
as the new behaviour is much more useful.
|
|
HASH_EXECUTABLES_ONLY: don't insert non-executable files into the
|
|
command hash used e.g. by completion; this is optional as the
|
|
resulting behaviour may be very slow on network paths.
|
|
HIST_FCNTL_LOCK: Use the system's file locking mechanism instead
|
|
of an ad-hoc mechanism for locking history files.
|
|
HIST_LEX_WORDS: Perform lexical analysis on history lines read from
|
|
files, so the words are more accurately determined. May be very slow.
|
|
HIST_SAVE_BY_COPY (on by default): if unset, write a history file in
|
|
place by truncating the old one. Only needs to be turned off in
|
|
special circumstances.
|
|
MULTIBYTE (on by default if available): both variables and editor
|
|
command lines are treated as sequences of multibyte characters
|
|
rather than raw bytes depending on the locale. May be turned off
|
|
within functions to perform bytewise operations.
|
|
MULTI_FUNCDEF (on by default): "foo bar () { ... }" defines two
|
|
functions. This is often found to be confusing and bug-prone,
|
|
so you may want to unset it.
|
|
PATH_SCRIPT: search the path for a script specified as the first
|
|
argument to the shell on invocation.
|
|
POSIX_ALIASES: reserved words are not candidates for alias expansion.
|
|
POSIX_CD: make directory changing more POSIX-compatible.
|
|
POSIX_JOBS: make job control more POSIX compliant.
|
|
POSIX_STRINGS: $'...\0...' always processes \0 as a NULL, but if the
|
|
option is set the remainder of the string is ignored.
|
|
POSIX_TRAPS: EXIT traps are not executed on return from shell functions.
|
|
PROMPT_SP: improves display of lines not ending with newlines when
|
|
PROMPT_CR is in effect.
|
|
SOURCE_TRACE: print information as files are executed with ".",
|
|
"source", or as startup or shutdown files.
|
|
|
|
Line editor
|
|
-+-+-+-+-+-
|
|
|
|
- Supports multibyte characters, including characters wider than one
|
|
screen cell and (with the COMBINING_CHARS option) combining characters.
|
|
|
|
- New builtin widgets:
|
|
arguments-base: allow non-decimal numeric arguments
|
|
history-incremental-pattern-search-{backward,forward}: support
|
|
patterns in incremental searches.
|
|
|
|
- New special variables:
|
|
region_highlight allows arbitrary highlighting of parts of the
|
|
command line; it is maintained dynamically.
|
|
UNDO_CHANGE_NO gives a unique record of the current change state of
|
|
the command line, for undoing back to a particular point using
|
|
the undo widget.
|
|
zle_highlight provides master control of highlighting for special
|
|
modes, e.g. unprintable characters.
|
|
ZLE_LINE_ABORTED records an editor line that was aborted by an error
|
|
or C-g. It can be used to recover aborted lines.
|
|
ZLE_STATE give miscellaneous information, currently whether the line
|
|
editor is in insert or overwrite mode.
|
|
|
|
- The undo widget takes an argument, a previous value of $UNDO_CHANGE_NO.
|
|
|
|
Completion
|
|
-+-+-+-+-+
|
|
|
|
- Many new and enhanced completion functions
|
|
|
|
- New styles:
|
|
accept-exact-dirs: suppress path expansion of directory components
|
|
that already exist, speeding up completion significantly on slow
|
|
network directories.
|
|
path-completion: can be used to suppress directory components before
|
|
the current one completely, so e.g. /u/b<TAB> only completes after the
|
|
"b", not the "u".
|
|
|
|
- New special variables:
|
|
ZLE_REMOVE_SUFFIX_CHARS, ZLE_SPACE_SUFFIX_CHARS provide enhanced
|
|
flexibility over suffix removal.
|
|
|
|
- Matching control, typically handled with the matcher-list style,
|
|
supports named character ranges, such as [:upper:], wherever
|
|
ranges were allowed, for example 'm:{[:upper:]}={[:lower:]}'.
|
|
However, matching control does not yet handle multibyte characters
|
|
properly, so this is currently limited to ASCII.
|
|
|
|
Syntax and compatibility
|
|
-+-+-+-+-+-+-+-+-+-+-+-+
|
|
|
|
- Substitutions of the form ${var:-"$@"} and ${var:+"$@"} now behave
|
|
much more like other shells when appropriate (e.g. with the
|
|
SH_WORD_SPLIT option).
|
|
|
|
- Assignments within variable substitutions, such as ${var=value},
|
|
are also more compatible with other shells where appropriate.
|
|
|
|
- The emulate command can now be passed an expression to be evaluated
|
|
in a "sticky" emulation, so that functions defined there always
|
|
behave in the appropriate emulation.
|
|
|
|
- "emulate sh" and similar modes have improved compatibility with
|
|
respect to deciding whether the shell should exit on errors.
|
|
|
|
- Signals now accept SIG as part of the name.
|
|
|
|
Modules
|
|
-+-+-+-
|
|
|
|
- Modules now present "features", specific builtins (b:), parameters
|
|
(p:), conditions (c:) and math functions (f:), allowing more control
|
|
over what is imported from a module.
|
|
|
|
- The zsh/curses module provides access to the "curses" screen
|
|
manipulation package.
|
|
|
|
- The zsh/datetime module has a calendar utility, although it is not
|
|
as robust as standalone calendar utilities.
|
|
|
|
- The zsh/newuser module and associated functions has facilities for
|
|
setting up startup files for a first-time user.
|
|
|
|
- The zsh/parameter module contains some new arrays to aid in tracing
|
|
of the shell's call stack: $funcsourcetrace and $funcfiletrace.
|
|
|
|
- The zsh/parameter module provides $usergroups, an associative arrays
|
|
whose keys are the names of groups the current user belongs to, with
|
|
the group identifier as the corresponding value.
|
|
|
|
- The zsh/system module has a zsystem builtin which provides file
|
|
locking and also a forward-compatible means for testing subcommands
|
|
supported.
|
|
|
|
Internal improvements
|
|
-+-+-+-+-+-+-+-+-+-+-
|
|
|
|
- High resolution timestamps are used internally for certain
|
|
comparisons when available.
|
|
|
|
Add-on functions
|
|
-+-+-+-+-+-+-+-+
|
|
|
|
- The VCS_Info system provides a way of keeping track of the state
|
|
of numerous version control systems within the shell.
|
|
|
|
- cdr etc.: change to a directory from a list that persists between
|
|
shell instances, with completion support.
|
|
|
|
- regexp-replace replaces text in variables using regular expressions;
|
|
it may be used by zle function widgets based on the functions
|
|
replace-string and replace-string-again to provide regular expression
|
|
replacements in the line editor.
|
|
|
|
|
|
Changes in 4.2 since version 4.2.0
|
|
----------------------------------
|
|
|
|
- The autoload and related builtins take options -k and -z to indicate
|
|
ksh or zsh autoloading style for given functions, making it possible
|
|
to mix and match.
|
|
|
|
- Assignments to associative arrays can use the i and r index flags.
|
|
For example,
|
|
assoc[(i)alpha*]=bravo
|
|
sets the value for the element whose key matches the pattern `alpha*';
|
|
assoc[(r)activ*]=passive
|
|
sets the value for the element whose current value matches the pattern
|
|
`activ*'.
|
|
|
|
- The glob qualifier F indicates a non-empty directory. Hence *(F)
|
|
indicates all subdirectories with entries, *(/^F) means all
|
|
subdirectories with no entries.
|
|
|
|
- fc -p and fc -P provide push/pop for the status of the shell's
|
|
history (both internal and using the history file). With automatic
|
|
scoping (fc -ap) it becomes easy to use a temporary history in a
|
|
function. This has been added to the calculator function zcalc to make
|
|
its internal history work more seamlessly.
|
|
|
|
- A new `try block' and `always block' syntax has been introduced
|
|
to make it easier to ensure the shell runs important tidy-up code
|
|
in the event of an error. It also runs after a break, continue, or
|
|
return, including a return forced by the ERR_RETURN option
|
|
(but not an exit, which is immediate). The syntax is:
|
|
`{' try-block-list `}' `always' `{' always-block-list `}'
|
|
where no newline or semicolon may appear between `}' and `always'.
|
|
This is compatible with all previous valid zsh syntax as an `always'
|
|
at that point used to be a syntax error. For example,
|
|
{ echo Code run in current shell } always { echo Tidy-up code }
|
|
|
|
- A new zle widget reset-prompt has been added to re-expand the current
|
|
prompt. Changes to the variable in use as well as changes in its
|
|
expansions are both taken into account. The same effect is now forced by
|
|
a job change notification, making the %j prompt escape and %(j..) ternary
|
|
expression more useful.
|
|
|
|
- The zftp module supports ports following the hostname in the normal suffix
|
|
notation, `host:port'. This requires IPv6 colon-style addresses to be
|
|
specified in suitably quoted square brackets, for example:
|
|
|
|
zftp open '[f000::baaa]'
|
|
zftp open '[f000::baaa]:ftp'
|
|
|
|
(the two are equivalent).
|
|
|
|
- Special traps, those that don't correspond to signals, i.e. ZERR, DEBUG
|
|
and EXIT are no longer executed inside other traps. This caused
|
|
unnecessary confusion if, for example, both DEBUG and EXIT traps
|
|
were set. The new behaviour is more compatible with other shells.
|
|
|
|
- New option TRAPS_ASYNC which if set allows traps to run while the
|
|
shell is waiting for a child process. This is the traditional zsh
|
|
behaviour; POSIX requires the option to be unset. In sh/ksh
|
|
compatibility mode the option is turned off by default and the option
|
|
letter -T turns it on, for compatibility with FreeBSD sh.
|
|
|
|
- New WIDGETSTYLE, WIDGETFUNC parameters in ZLE.
|
|
|
|
- Glob qualifier (+func) is shorthand for (e:func:) (calls a command,
|
|
typically a shell function, with no argument).
|
|
|
|
|
|
New features between zsh versions 4.0 and 4.2
|
|
---------------------------------------------
|
|
|
|
Configuration:
|
|
- upgraded to use autoconf post-2.50
|
|
- improved compatibility with other shells through shell options,
|
|
builtin arguments and improved builtin option parsing
|
|
|
|
Syntax and builtins:
|
|
- new printf builtin
|
|
- `+=' to append to parameters which works for scalars, arrays and (with
|
|
pairs) associative arrays.
|
|
- enhanced multiple parameter `for' loops:
|
|
for key value in key1 value1 key2 value2 ...
|
|
maintaining full compatibility with POSIX syntax.
|
|
- Suffix aliases allow the shell to run a command on a file by suffix,
|
|
e.g `alias -s ps=gv' makes `foo.ps' execute `gv foo.ps'. Supplied
|
|
function zsh-mime-setup uses existing mailcap and mime.types files
|
|
to set up suitable aliases. Supplied function pick-web-browser is
|
|
suitable for finding a browser to show .html etc. files by suffix alias.
|
|
- new option `no_case_glob' for case-insensitive globbing.
|
|
|
|
Add-on modules and functions:
|
|
- zsh/datetime modules makes date formatting and seconds since EPOCH
|
|
available inside the shell.
|
|
- zsh/net/tcp module provides builtin interface to TCP through ztcp
|
|
builtin. Function suite for interactive and script use with expect-style
|
|
pattern matching.
|
|
- zsh/net/socket module provides zsocket builtin.
|
|
- zcalc calculator function with full line editing.
|
|
- builtin interface to pcre library
|
|
- zsh/zselect module provides zselect builtin as interface to select
|
|
system call
|
|
|
|
Completion system:
|
|
- general improvements to command and context support, low-level functions,
|
|
display code.
|
|
- in verbose mode, matches with the same description are grouped
|
|
- highly configurable completions for values of specific parameters,
|
|
specific redirections for specific commands
|
|
- support for bash completion functions (typically zsh native functions are
|
|
more powerful where available)
|
|
- New completions provided for (some of these may be in later 4.0
|
|
releases): valgrind, tidy, texinfo, infocmp, Java classes, larch, limit,
|
|
locale parameters, netcat, mysqldiff, mt, lsof, elinks, ant, debchange
|
|
(dch), email addresses, file system types, Perforce, xsltproc.
|
|
Plus many others.
|
|
|
|
Line editor:
|
|
- special parameters $PREDISPLAY, $POSTDISPLAY available in function
|
|
widgets to configure uneditable text (for narrowing)
|
|
- recursive editing
|
|
- supplied widgets read-from-minibuffer, replace-string use these features
|
|
(more intuitive prompting and argument reading than 4.0)
|
|
- access to killed text via $CUTBUFFER and $killring
|
|
- supplied highly configurable word widgets forward-word-match etc., can
|
|
set what constitutes a word interactively or in startup script
|
|
(implement bash-style behaviour, replacing previous bash-* word widgets)
|
|
- interface to incremental search via $LASTSEARCH
|
|
- better handling of keymaps in zle and widgets
|
|
- better support for output from user-defined widgets while zle is active
|
|
- tetris game which runs entirely in zle
|
|
- several other contributed widgets
|
|
|
|
Local internal improvements:
|
|
- disowned jobs are automatically restarted
|
|
- \u and \U print escapes for Unicode
|
|
- read -d <delimiter> allows a custom line ending.
|
|
- read -t <timeout>.
|
|
- line numbers in error messages and $PS4 output are more consistent
|
|
- `=prog' expands only paths, no longer aliases for consistency
|
|
- job display in prompts; `jobs' command output can be piped
|
|
- prompts: new $RPROMPT2, %^, %j, %y, enhanced %{, %}, %_.
|
|
- rand48() function in zsh/mathfunc for better randomness in arithmetic
|
|
(if the corresponding math library function is present)
|
|
- $SECONDS parameter can be made floating point via `typeset -F SECONDS'
|
|
for better timing accuracy
|
|
- improvements to command line history mechanism
|
|
- job table is dynamically sized, preventing overflow (typically seen
|
|
previously in complex completions).
|
|
- many bugfixes
|
|
|
|
|
|
New features in zsh version 4.0.1
|
|
---------------------------------
|
|
|
|
Compared with 3.1.9, there are mostly incremental improvements to
|
|
- the new completion system --- more functions, completers, styles...
|
|
- the line editor
|
|
- handling of signals and traps
|
|
- the configuration system, particularly for modules
|
|
- Cygwin support (now essentially complete)
|
|
- arithmetic evaluation
|
|
- the zpty (pseudoterminal handling) module
|
|
- the test suite
|
|
plus various bug fixes and compatibility improvements.
|
|
|
|
The alias modules (zle.so as an alias for zsh/zle.so, etc.) have been
|
|
removed; use `zmodload -A' to load modules under other names. This is
|
|
irrelevant if you are upgrading from 3.0.
|
|
|
|
Compared with the 3.0 series of releases (the last stable set), the most
|
|
significant of a large number of improvements in the shell are:
|
|
- Dynamically loadable modules with hierarchical naming system
|
|
- Shell functions as editor functions, with much additional builtin support
|
|
- Incredibly rich new completion system; just needs a single
|
|
initialization command to provide completion for all sorts of commands
|
|
and contexts
|
|
- Associative arrays
|
|
- Lots of new features in parameter substitution and globbing; more
|
|
logical handling of nested parameter substitutions
|
|
- Rewritten pattern-matching (globbing) code supports approximate
|
|
and case-insensitive matching and backreferences
|
|
- Various custom modules for pty's, FTP, special parameters, etc.
|
|
- Rewrites of many internal parts of the code: execution code to
|
|
provide compilation to internal representation, pattern matching
|
|
- Floating point arithmetic and mathematical functions module
|
|
- A test suite
|
|
- Various new options for compatibility with this, that and the other
|
|
See the 3.1.x changes below for more detail.
|
|
|
|
|
|
New features in zsh version 3.1.8 and 3.1.9
|
|
-------------------------------------------
|
|
These are primarily bug-fix versions. There are only a few user-visible
|
|
changes.
|
|
- Array slices ${array[a,b]} with b < a now correctly have zero length.
|
|
|
|
|
|
New features in zsh version 3.1.7
|
|
---------------------------------
|
|
Further enhancements to new completion system:
|
|
- Comprehensive context-sensitive configuration via `styles', which
|
|
can be set by the menu-driven front end in compinstall
|
|
- General mechanism for setting patterns to be ignored in a completion;
|
|
overriding of patterns to be matched for functions
|
|
- New completers: _prefix to complete word before cursor, _ignored
|
|
to complete using words so far ignored (like $fignore but more
|
|
powerful), _history to complete words from shell history
|
|
- Multiple use of completers with different options, similarly splitting
|
|
of different types of completion (`tags') so they are considered with
|
|
different styles
|
|
- Many more supplied completions for standard commands which work out of
|
|
the box, and better handling of command line options/arguments which
|
|
behave in the usual way
|
|
- $fpath now set up to use installed functions by default; functions
|
|
can be loaded just by `autoload -U compinit; compinit'
|
|
- Much improved handling of nested quoting and nested braces
|
|
- New LIST_PACKED and LIST_ROWS_FIRST completion options and corresponding
|
|
styles
|
|
- compctl library separated out (frozen but still supported)
|
|
- User-friendly introduction available at zsh website
|
|
http://zsh.sourceforge.net/
|
|
|
|
Additions to complist listing library (coloured completion and menu
|
|
selection):
|
|
- Listings can be shown page by page (are by default for new completion)
|
|
- Menu selection allows full up and down scrolling of long lists
|
|
|
|
Other editing features:
|
|
- new parameters $PENDING, $MARK, $BUFFERLINES
|
|
- Easy display of a prompt from within an editing widget
|
|
|
|
Code parsing, storing and execution:
|
|
- Completely new system of storing code internally, greatly optimised
|
|
- Much less memory for shell functions etc.
|
|
- Can compile shell functions to .zwc `wordcode' functions for fast
|
|
loading
|
|
- Can create `digest' files of entire directories in .zwc format
|
|
|
|
Parameters:
|
|
- Floating point support added, similar to ksh93, `typeset -F' and
|
|
`typeset -E' declare floating point variables; usual C/Fortran-like
|
|
rules for integer/float conversion
|
|
- Mathematical library zsh/mathfunc contains all the standard mathematical
|
|
functions for use in arithmetical expressions
|
|
- Improved parsing of arithmetical expressions and better error messages
|
|
- Special parameters can be made local
|
|
- `typeset -h' hides specialness of parameters, either as parameter
|
|
attribute or when declaring new local variable
|
|
- Local parameters can now be exported as in other shells; new option
|
|
GLOBAL_EXPORTS on by default provides old behaviour that `typeset -x'
|
|
referred to global parameters.
|
|
- zsh/parameter module enhanced: now needed for new completion; parameters
|
|
provided have `-h' flag set so that they are hidden by `typeset', so
|
|
that existing functions don't need to be changed
|
|
- Quotes can be stripped from parameter values with ${(Q)...}, providing
|
|
reverse of ${(q...)...} facility
|
|
|
|
Globbing and pattern matching:
|
|
- Pattern matching rewritten for efficiency
|
|
- Supports `backreferences', i.e. extracting parenthesised chunks of
|
|
matches, e.g.
|
|
[[ $foo = (#b)(*/)[^/]* ]]
|
|
stores the part of $foo up to the last / in $match[1] and the indexes of
|
|
the match in $mbegin[1], $mend[1]. (#m) is also available to set $MATCH
|
|
to the entire match and corresponding $MBEGIN, $MEND: useful in
|
|
parameter substitutions like ${.../.../...}.
|
|
- (#s) and (#e) match start and end of pattern like ^ and $ in regular
|
|
expression, useful in complex expressions such as ((#s)|/)dirname((#e)|/)
|
|
and in parameter expressions.
|
|
|
|
- Depth-first/last listing of recursive glob lists
|
|
|
|
Functions etc.:
|
|
- `autoload -X' inside a function body instructs the shell to
|
|
bootstrap the function at that point
|
|
- `autoload +X fn' says load the function fn but don't execute it
|
|
- Prompt `themes' make customization of prompts easier
|
|
|
|
Modules:
|
|
- New hierarchical naming scheme for modules; supplied modules go into
|
|
zsh subdirectory, so zle becomes zsh/zle etc.; aliases supplied for
|
|
compatibility for existing code, but the new format should be used in
|
|
future.
|
|
- zmodload is more consistent between dynamically and statically linked
|
|
shells
|
|
- zsh/zftp and its function suite support multiple sessions (zfsession
|
|
command); zftransfer allows transfer of files between two ftp sessions
|
|
with no local file; use styles for e.g. progress style; IPv6 supported;
|
|
recursive put `zfput -r' for uploads
|
|
- zsh/zpty module creates pseudoterminal and allows builtin `expect'-like
|
|
behaviour
|
|
|
|
Other:
|
|
- Test suite, not yet complete (`make test')
|
|
- use of Linux task limits
|
|
- Many fixes including output redirection with `setopt xtrace' and
|
|
other redirection fixes; NIS+ problem.
|
|
- Better null-command behaviour in sh and csh emulation
|
|
- Internal memory usage optimisations
|
|
|
|
|
|
New features in zsh version 3.1.6 (beta version)
|
|
------------------------------------------------
|
|
Note also the changes for 3.0.6, which include changes between 3.1.5. and
|
|
3.1.6.
|
|
|
|
New completion system via shell functions; massive degree of
|
|
programmability and configurability:
|
|
- ready-made function suite to use, see zshcompsys(1)
|
|
- approximate completion and spelling correction via completion
|
|
- control over matching for case-independence, partial word completion, etc.
|
|
- menu selection: choose a completion by moving the cursor
|
|
- coloured completion lists
|
|
- completion of filenames in quotes is now more reliable; splitting
|
|
quoted strings into command arguments is also possible.
|
|
|
|
Other editing changes:
|
|
- enhancements to function/editing interface: new parameters, numeric
|
|
arguments, string argument passing, reading keys from widgets.
|
|
- the old history-search-{back,for}ward behaviour and bindings have
|
|
returned (up to minor details).
|
|
- BASH_AUTO_LIST option to show completion list only on second key press.
|
|
- the ZBEEP parameter gives a string to output instead of beeping,
|
|
allowing you to have a visual bell.
|
|
|
|
History changes: new options HIST_NO_FUNCTIONS, HIST_EXPIRE_DUPS_FIRST,
|
|
HIST_FIND_NO_DUPS, HIST_IGNORE_ALL_DUPS, INC_APPEND_HISTORY,
|
|
HIST_SAVE_NO_DUPS, SHARE_HISTORY, allow better control of when history is
|
|
read and written and how duplicates are handled. New format for history
|
|
saves.
|
|
|
|
Associative arrays plus enhanced parameter substitutions to retrieve keys
|
|
and values.
|
|
|
|
Globbing changes:
|
|
- Case-insensitive and approximate globbing.
|
|
- Ordering and indexing of globbing matches, e.g. *(om[1]) picks
|
|
most recently modified file.
|
|
- General file mode qualifier with chmod(1)-like syntax, e.g. *(f:u+wx:)
|
|
|
|
New loadable modules:
|
|
- zftp, plus associated function suite, for turning your zsh session
|
|
into an FTP session too
|
|
- parameter, for examining and altering shell hash tables via an
|
|
associative array interface.
|
|
- mapfile, for reading and writing external files via an associative
|
|
array interface.
|
|
|
|
Debugging and prompt enhancements:
|
|
- $PS4 can contain %i for $LINENO as well as %N for script or function
|
|
names (default PS4 changed), also %_ for current shell structure
|
|
executing;
|
|
- Prompt truncation %<...< is now more flexible: it applies to a
|
|
whole section of the prompt, not just one escape. You need to put
|
|
%<< after the truncated escape to get the old behaviour.
|
|
- %20(l.yes.no) in prompts prints yes if at least 20 characters have
|
|
been output, else no (e.g. for outputting extra newlines).
|
|
|
|
Parameter and expansion changes
|
|
- `typeset -t MYPATH mypath' creates tied path/PATH-like variables
|
|
- `typeset -g' allows operations on parameters without making them local
|
|
- New expansions
|
|
- ${(t)param} prints type information for $param
|
|
- ${(P)param} treats value of $param as the name of a param to
|
|
substitute
|
|
- ${foo:q} can quote replaced parameter text from expansion
|
|
- ${foo/old/new} substitution, like bash; also (S) flag for shortest
|
|
match
|
|
- $foo[(b.2.i)bar] starts searching $foo for bar starting at 2nd match
|
|
|
|
Builtin and function changes
|
|
- stat module: `stat -H hash foo' gives you e.g. $hash[mtime]
|
|
- `autoload -U' autoloads functions without alias expansion.
|
|
|
|
Other new options:
|
|
- LOCAL_TRAPS allows signal traps to be local to functions (as in ksh).
|
|
- NO_RCS can now be turned on at any point in initialization files.
|
|
- NO_GLOBAL_RCS can force /etc/z* files after /etc/zshenv to be skipped.
|
|
(Please don't use this as an excuse to stuff more into /etc/zshenv!)
|
|
- Existing MAGIC_EQUAL_SUBST option is more useful; any argument containing
|
|
...=~...:~... will perform filename expansion on the ~ (previously,
|
|
the string before `=' had to look like a parameter name).
|
|
|
|
Configuration changes:
|
|
- Generation of signal names should be more reliable
|
|
- Customizable installation of shell functions from distribution.
|
|
|
|
|
|
New features in zsh version 3.0.6
|
|
---------------------------------
|
|
|
|
Most of these changes are designed to improve compatibility with zsh
|
|
version 3.1.6, the latest development release. However, this release also
|
|
fixes all known Year 2000 (Y2K) bugs in zsh 3.0.
|
|
|
|
History changes:
|
|
- whitespace between words is ignored in history searches.
|
|
- new option HIST_REDUCE_BLANKS removes extra whitespace in the stored
|
|
history.
|
|
- support for reading (but not writing) version 3.1.6 history files.
|
|
|
|
Globbing changes:
|
|
- the a, c, and m glob qualifiers can now test time in seconds.
|
|
- globbing of number ranges behaves more like character ranges in that
|
|
it can match a prefix of a number, e.g. `<1-5>*' matches 1, 2, 3, 4,
|
|
5, 17, 23skiddoo, 5986, etc., but not 6, 7, 8ball, 911, etc.
|
|
|
|
Parameter and expansion changes:
|
|
- expansion of ~ and other globbing flags via ${~param} do not depend
|
|
upon EXTENDED_GLOB (bug fix).
|
|
- nested parameter substitutions require braces (this was always the
|
|
documented behavior, but previous parsers didn't enforce it).
|
|
- quote only nested expansion, e.g. ${(f)"$(<file)"} reads complete
|
|
`file', then splits lines into array.
|
|
|
|
Builtin and function changes:
|
|
- `typeset -U' works on the colon-array version of linked parameters.
|
|
- `typeset +f' and `functions +' output the names (only) of functions.
|
|
- `emulate -L' has the effect of `setopt localoptions'.
|
|
- in fn1() { local foo; unset foo; foo=bar; }, foo is restored at local
|
|
level, whereas if the `unset foo' appeared in a nested function it
|
|
would have been restored at global level, which was presumably wrong.
|
|
- `foo=bar >&file' is a redirection, not a NULLCMD.
|
|
- any single complex command, such as `case ... esac', parses as if
|
|
semicolon-terminated (bug fix).
|
|
- the shell function `preexec', if defined, is run after parsing each
|
|
command line but before executing the command.
|
|
|
|
Other changes:
|
|
- the option PRINT_EIGHT_BIT causes zsh to emit raw bytes in prompts
|
|
and completion lists even if the system ctype(3) package says that
|
|
those bytes are not "printable."
|
|
|
|
Debugging enhancements:
|
|
- LINENO is now very much more useful in scripts and functions and is
|
|
reported correctly in most error messages.
|
|
- ERREXIT behavior is now consistent with newer Bourne-like shells,
|
|
e.g. with respect to `if' tests that fail.
|
|
|
|
Configuration changes:
|
|
- Large file and 64-bit integers on 32-bit machines supported where
|
|
provided by OS.
|
|
- a few more system features, such as getpwnam/getpwuid, are tested for.
|
|
|
|
|
|
New features in zsh version 3.1 (beta version)
|
|
----------------------------------------------
|
|
|
|
On most operating systems zsh can load binary modules dynamically at
|
|
run-time. ZLE and the compctl builtin are now reside in a separate
|
|
module which is loaded automatically on demand.
|
|
|
|
for ((expr; expr; expr)) do ... done loop syntax from AT&T ksh93 is
|
|
now supported.
|
|
|
|
POSIX globbing character classes ([:alnum:] etc.) are now supported.
|
|
|
|
ksh's case fall-through feature (;&) is supported.
|
|
|
|
ksh93's $'' quoting syntax is supported.
|
|
|
|
Restricted mode is now supported. This is controlled by the new option
|
|
RESTRICTED (-r).
|
|
|
|
New options BARE_GLOB_QUAL, HIST_NO_FUNCTIONS (alias NO_LOG), KSH_GLOB,
|
|
PRINT_EIGHT_BIT, PROMPT_BANG, PROMPT_PERCENT, RM_STAR_WAIT.
|
|
|
|
Options ALWAYS_LAST_PROMPT, APPEND_HISTORY, AUTO_LIST, AUTO_MENU,
|
|
AUTO_PARAM_KEYS, AUTO_PARAM_SLASH, AUTO_REMOVE_SLASH, LIST_AMBIGUOUS
|
|
and LIST_TYPES are now on by default.
|
|
|
|
In ZLE, arbitrarily many keymaps can be defined. Multi-character
|
|
keybindings now work.
|
|
|
|
Completion can be performed within a brace expansion.
|
|
|
|
EMACS-like universal-argument function.
|
|
|
|
|
|
New features in zsh version 3.0
|
|
-------------------------------
|
|
|
|
Trailing "/" in a glob pattern now works like in other shell thus it
|
|
can no longer be used as a shorthand for "(/)".
|
|
|
|
Much improved sh/ksh emulation. When zsh is invoked as sh it mostly
|
|
conforms to POSIX 1003.2.
|
|
|
|
Enhanced parameter expansion features: new flags: A, @, e, W, p, f, F.
|
|
Expansions can be nested. For example,
|
|
"${${(M)${(f@)$(<builtin.pro)}:#char*}[2][(w)3]}" expands to the third
|
|
word of the second line of builtin.pro which begins with char. See
|
|
zshexpn(1) for the details.
|
|
|
|
***/foo glob does recursive directory search following symbolic links.
|
|
|
|
Traps defined by the trap builtin are now executed in the current shell
|
|
environment and not as a shell function. This means that $1 is not set
|
|
to the signal number. Of course the TRAPxxx functions continue working
|
|
as before.
|
|
|
|
Traps defined by the trap builtin are reset to their default values in
|
|
subshells.
|
|
|
|
Option names can be prefixed by `no' to unset an option.
|
|
setopt no_option_name is the same as unsetopt option_name.
|
|
This change affects the output of the setopt and unsetopt
|
|
builtins when these are invoked without arguments. See
|
|
the zshoptions manual page for more explanation.
|
|
|
|
!, {, } and [[ are now reserved words. Things like [[-z $foo]] or {foo}
|
|
should not be used. {foo} still works if the IGNORE_BRACES option is not
|
|
set but this feature may be removed in the future. [[ -z $foo ]] and
|
|
{ foo } should be used instead.
|
|
|
|
HOSTTYPE special parameter is removed. The new OSTYPE, MACHTYPE and
|
|
VENDOR parameters should be used instead.
|
|
|
|
VERSION parameter is renamed to ZSH_VERSION
|
|
|
|
exec now saves the history in interactive shells. If you do not like this
|
|
behaviour you can alias exec to 'unset HISTFILE ; exec'.
|
|
|
|
${~spec}, ${=spec} and ${^spec} used to toggle the effect of
|
|
globsubst/shwordsplit/rcexpandparam. Now these force the corresponding
|
|
option on. ~, = or ^ can be doubled to force the relevant option off for
|
|
the substitution.
|
|
|
|
Explicitly requested word splitting like ${=spec} or ${(s:delim:)spec}
|
|
will be executed even if the substitution is double quoted.
|
|
|
|
The right-hand side of assignments are no longer globbed by default hence
|
|
assignment foo=* will assign '*' as a value of foo. Use the foo=( * )
|
|
array assignment syntax to get the old behaviour. Alternatively the
|
|
GLOB_ASSIGN can be set to emulate the old behaviour but the usage of this
|
|
option is strongly discouraged and this option may be completely removed in
|
|
the future.
|
|
|
|
foo=$bar no longer creates an array even if bar is an array. Use
|
|
foo=( $bar ) or even better, foo=( "$bar[@]" ) instead.
|
|
|
|
When foo is an array parameter ${#foo} will always return the length of the
|
|
array even if the substitution is double quoted. ${(c)#foo} should be used
|
|
to get back the old behaviour.
|
|
|
|
When the prompt_subst option is set prompts are fully expanded using
|
|
parameter expansion, command substitution and arithmetic expansion.
|
|
In 2.5 backquote substitution was not performed in the prompts so this
|
|
change might cause problems in some startup scripts if ` is used literally
|
|
in prompts.
|
|
|
|
History substitution is now not performed if the history escape character
|
|
appears in a single-quoted string. This may break some interactive shell
|
|
functions which use \! in single-quoted strings.
|
|
|
|
The UID, EUID, GID, EGID parameters can be assigned now. The assignment
|
|
executes the setuid(), seteuid(), setgid(), setegid() respectively. On
|
|
systems where setuid and seteuid is not supported these functions are
|
|
emulated using setreuid or setresuid which may result in a different
|
|
behaviour.
|
|
|
|
Assigning the USERNAME parameter will call setuid(uid) where uid is the
|
|
user id of the specified user.
|
|
|
|
The privileged (-p) option is automatically set on invocation if euid != uid
|
|
or egid != gid. If this option is set no user startup files are sourced.
|
|
The shell will drop privileges when this option is unset by resetting its
|
|
euid to uid and its egid to gid.
|
|
|
|
The =number substitution for accessing the directory stack is changed to
|
|
~number to allow =command substitution when a command name begins with a
|
|
digit.
|
|
|
|
<> is a redirection operator which opens the standard input for both
|
|
reading and writing. To match a number use <->.
|
|
|
|
Option letters -1 and -C for PRINT_EXIT_VALUE and NO_CLOBBER are swapped:
|
|
`set -C' sets NO_CLOBBER and `set -1' sets PRINT_EXIT_VALUE.
|
|
|
|
AUTO_PUSHD behaviour is changed. Now cd without arguments will always go
|
|
to the $HOME directory even if AUTO_PUSHD is set and PUSHD_TO_HOME is not
|
|
set. If you preferred the old behaviour you can alias cd to pushd.
|
|
|
|
IFS word splitting with SH_WORD_SPLIT and the splitting of the input in the
|
|
read builtin has changed in cases when IFS contains characters other than
|
|
<space>, <tab>, <newline>. See the description of IFS in the zshparam
|
|
manual page for more details.
|
|
|
|
|
|
New features in zsh version 2.5
|
|
-------------------------------
|
|
|
|
Greatly expanded completion possibilities. Programmable completion
|
|
allows detailed control over what arguments of what commands can be
|
|
completed to what. See dots/zcomp in the distribution for examples.
|
|
|
|
Expand filenames with ~ and = on the right hand side of parameter
|
|
assignments. New option MAGIC_EQUAL_SUBST to do it in all
|
|
identifier=expression arguments.
|
|
|
|
${+name} becomes 1 or 0 if name is set or unset. ${~spec} toggles
|
|
GLOB_SUBST in substitution. Parameter substitution takes lots
|
|
of flags in the format ${(flags)name}.
|
|
|
|
New glob qualifiers for block/character special files, times in glob
|
|
qualifiers can be in months, weeks, days, hours, minutes. Qualifiers can
|
|
work on links or on what they point to. Qualifiers separated by commas
|
|
are or-ed.
|
|
|
|
New parameter substitution modifiers (fFwW) to repeat actions. New
|
|
option CSH_JUNKIE_HISTORY.
|
|
|
|
New line editor functions history-beginning-search-backward,
|
|
history-beginning-search-forward, expand-or-complete-prefix, push-input,
|
|
push-line-or-edit.
|
|
|
|
Assign to part of a string, use qualifiers on string subscription with
|
|
$foo[(qual)2,5]
|
|
|
|
New parameters: EGID, EUID, KEYTIMEOUT
|
|
|
|
New prompt escape sequence %_ to get constructs like for and while in
|
|
the secondary prompt. %E in prompt clears to end of screen.
|
|
|
|
Conditional expressions in PROMPT and WATCHFMT.
|
|
|
|
New options ALWAYS_LAST_PROMPT, ALWAYS_TO_END, AUTO_PARAM_KEYS,
|
|
COMPLETE_ALIASES, COMPLETE_IN_WORD, CSH_JUNKIE_HISTORY, GLOB_SUBST,
|
|
LIST_AMBIGUOUS, MAGIC_EQUAL_SUBST, NO_FLOW_CONTROL, PROMPT_SUBST
|
|
|
|
New option -m to many builtins makes arguments subject to pattern
|
|
matching.
|
|
|
|
Bindkey can now bind both key sequences and prefixes of those. You can
|
|
for example bind ESC and function keys sending ESC sequences.
|
|
|
|
Additional options to read builtin to use in functions called by
|
|
completion.
|
|
|
|
New options to print to sort arguments and print them in columns.
|
|
|
|
Some additional resource limits can be specified.
|
|
|
|
Some editor functions now work in the minibuffer.
|