@c -*- texinfo -*-

@chapter Advanced Options

In this category you'll find various advanced options regarding history, Bash
builtin features and BashStyle-NG specific additions.

@heading History

@defvr {Setting} History Timeformat
If this is set it's value will be used as a timestamp that will be prepend to
the output of the @code{history} builtin. For a detailed list of possible values
refer to @code{man strftime}.
@end defvr

@defvr {Setting} Historycontrol Type
There are different ways of history controlling in Bash. This option lets you
choose which one to use.

@itemize @minus
@item Erasedups: erase duplicated entries from history and only keep the newest one
@item Ignoredups: erase duplicated entries from history and only keep the oldest one
@item Ignorespace: remove any entries with a leading space from history
@item Ignoreboth: Ignoredups and Ignorespace together
@end itemize
@end defvr

@defvr {Setting} History Blacklist
A colon separated list of commands to not log in the history. A good choice is
to add @code{cd} and @code{ls} to this list, to prevent excessive history
spamming.
@end defvr

@defvr {Setting} History Size
This controls how many history entries are saved. 0 for infinite.
@end defvr

@defvr {Setting} Sync History (Multisession)
This is a BashStyle-NG extension which allows syncronized history over multiple,
simultaneously running Bash sessions. It provides custom functions for history
controlling as well, so history blacklisting is honoured.
@end defvr

@heading BashStyle-NG

This Section contains settings for BashStyle-NG specific functions and features.

@defvr {Setting} Use lscd in favour of cd
@code{lscd} is a BashStyle-NG builtin function which can be used in favour of the
@code{cd} Bash builtin. @code{lscd} displays the directory content every time you
change the directory, while it allows for custom @code{ls} options to be used.

Furthermore it features additional options for creating a directory if it does
not exist yet, or for logging the directory currently in after each directory
change, together with BashStyle-NG's option to restore the directory in a new
shell you'll then start in the same directory in a newly started session as the
one you're in the current session.

Those additional options are described next.
@end defvr

@defvr {Setting} Use treecd in favour of cd
@code{treecd} is a BashStyle-NG builtin function similar to @code{lscd}, but
using @code{tree} instead of @code{ls} to display the directory content on each
directory change.
@end defvr

@defvr {Setting} lscd/treecd: create directory
When using @code{lscd} or @code{treecd} in favour of @code{cd}, this option
controls whether a directory that does currently not exist is created and then
changed into.

Note: there's currently only partial permission check done for this feature,
it will work when a directory inside an existing directory is created (1 level
deep directory paths), deeper nested directories paths are not supported.

Example: if @code{/home/test} exists @code{cd /home/test/newdir} will succeed,
while @code{cd /home/test/newdir/newsubdir} will fail, as @code{/home/test/newdir}
does not exist.
@end defvr

@defvr {Setting} lscd/treecd: banner color
When using @code{lscd} or @code{treecd} in favour of @code{cd}, this option
controls what color is used for the banner.
@end defvr

@defvr {Setting} lscd/treecd: empty color
When using @code{lscd} or @code{treecd} in favour of @code{cd}, this option
controls what color is used to indicate a directory is empty.
@end defvr

@defvr {Setting} lscd/treecd: mkdir color
When using @code{lscd} or @code{treecd} in favour of @code{cd}, this option
controls what color is used to indicate the directory was newly created.
@end defvr

@defvr {Setting} Restore directory in new shell
This option saves the last directory upon session exit. When a new session is
started, Bash will automatically change into it.

Note: if you've enabled either @code{lscd} or @code{treecd} the directory will
be additionally saved every time you change the directory, allowing you to start
a new shell in your current directory immediately.
@end defvr

@defvr {Setting} lscd options
Additional options to pass to @code{lscd} for displaying the directory content.
All @code{ls} options are supported, see @code{ls --help} for all possibilites.
@end defvr

@defvr {Setting} treecd options
Additional options to pass to @code{treecd} for displaying the directory content.
All @code{tree} options are supported, see @code{tree --help} for all possibilites.
@end defvr

@defvr {Setting} Let @code{dd} show progressbar
Let the @code{dd} utility show a progressbar. This requires @code{coreutils} version
8.24 or newer.
@end defvr

@defvr {Setting} Let @code{dd} continue on error
Normally the @code{dd} utility will abort on the first occurring error. Enabling
this will make @code{dd} displaying a warning and continuing it's work instead.

This is mostly useful when dealing with damaged CDs or thelike.
@end defvr

@defvr {Setting} User Char
Character to display in prompt for normal users, for root, it's always @code{#}.
@end defvr

@defvr {Setting} Return Code: OK
Character to display in prompts that support return code displaying when a command
has succesfully finished, default @code{✔}. On the linux console always @code{+}.
@end defvr

@defvr {Setting} Return Code: Error
Character to display in prompts that support return code displaying when a command
has failed to finish successfully, default @code{✘}. On the linux console always
@code{-}.
@end defvr

@defvr {Setting} Return Code: Other
Character to display in prompts that support return code displaying when a command
has neither return code @code{0} (success) or @code{1} (error), default @code{⊘}.
On the linux console always @code{/}.
@end defvr

@defvr {Setting} Welcome Message
A command to execute upon each new Bash session. This can be any command in
\$PATH. Usually this is something like @code{fortune}.
@end defvr

@defvr {Setting} Directory indicator
Normally directories are indicated by @code{/}, this allows prompts to use a
different character as directory indicator.

Note: this is only a cosmetic change to prompts, where @code{/} is replaced by
your choice made here, this has no technical impact on how your OS works.
@end defvr

@defvr {Setting} User Birthday
User's birthday in MM-DD format. What's gonna happen that day, I wonder?
@end defvr

@defvr {Setting} Verbose output on start
BashStyle-NG does several logging upon Bash session start. If you want visible
logging enable this option. Usually you don't need this and thus it's disabled
by default.
@end defvr

@heading Bash Builtin

Various options for Bash builtin functions and features.

@defvr {Setting} CDPATH
A colon separted list of directories to which's subdirectories @code{cd} can
directly change into. For example if @code{~/Desktop/myfancydir} exists and
@code{~/Desktop} is in @code{CDPATH}, you can enter this directory from anywhere
by issuing @code{cd myfancydir}.
@end defvr

@defvr {Setting} Completion Blacklist
A colon separated list of matches to ignore from completion. For example if
@code{~} is in this list, all backup files like @code{myfile~} will not be shown
upon filename completion.
@end defvr

@defvr {Setting} Set Timeout
Bash can automatically log you out after a given time of inactivity (in secons).
0 to disable (default).
@end defvr

@defvr {Setting} Editor for fc
Choose the editor for the @code{fc} Bash builtin.
@end defvr

@defvr {Setting} Globbing Blacklist
A colon separated list of matches to ignore from globbing results. For example
@code{ls -A} includes @code{.} and @code{..}, but if you add both to this
blacklist, @code{ls -A} will no longer include them. Use with caution.
@end defvr

@defvr {Setting} Path
A colon separated list of directories containing your systems executable files.
If empty the system-wide @code{PATH} variable will be used.
@end defvr

@defvr {Setting} Include PWD in Path
Wether the current directory (@code{.}) is appended to the @code{PATH} variable.
@end defvr

@heading Bash 4.4+

Options introduced with Bash version 4.4.

@defvr {Setting} Exec Blacklist
Blacklist of binaries not to be executed. For example if @code{*conf} is part of
Exec Blacklist, executing @code{autoconf} or any other matching binary will be
prevented.
@end defvr
