Editing variables (2)
Functions: To distinguish functions from variables, each function
name must be preceded by -f, -F or -p.
The function doesn't have to exist yet. If necessary,
an empty function definition is generated. The options correspond to
different modes:
-f name: Pure temporary editing. Usable for generating
and testing small functions on the fly, and restricted to bash.
Bash can reproduce internally saved functions as text, formatted in a
bash-specific way. This format doesn't look very pretty, but it works
anyway. All function definitions are put into a single file, together with
the variable settings.
In contrast to bash, ksh can only print the
text of a function if the file it has been read from exists. Without the
source file, the function may still be called, but no longer reproduced
in text form, so using a temporary file doesn't make sense here. Consequently,
in the ksh version option -f works the same as -F (see below).
-F name: Editing using a permanent file. This
is necessary if you want to change a function in different shell
sessions. Instead of putting it in a temporary file, the text is
saved in in a file named after the function in a special diretory. The directory's
path can be assigned to the variables BASH_VARED_FDIR
or KSH_VARED_FDIR, respetively. The defaults are ~/bash-funcs
and ~/ksh-funcs. No source file in this directory is deleted automatically,
this has to be done by the user. Note that if editing a function defined
elsewhere, two versions exist in parallel - the original and the one created by
vared. If the original version is loaded during logon, it
will be the one that is active, but any following vared call
activates the changed one. Thus a function can be edited
step by step without touching the original version.
-p name or -p path: Direct
editing of a function source. If the parameter is a simple name, the
source will be looked up using $FPATH. If it isn't
(i.e., it contains at least one '/'), it is considered the path of the source.
Here, in contrast to (2), the "official" version of the
function is changed, so be careful.
Bash version
Ksh version
|