[ About | Licence | Contacts ]
Written by Oleksandr Gavenko (AKA gavenkoa), compiled on 2024-04-01 from rev 052223c22317.

Bash.

How override PS1, PS2?

When loading bash read ~/.bash_profile and ~/.bashrc.

Put at end of these files:

PS1='\u@\H$ '

When xterm start bash - it start as non-login. So ~/.bash_profile and ~/.bashrc didn't read. To workaround this use:

$ xterm -e bash -i -c "mc -x"

That make bash interactive and init file was readed.

Command history.

Bash allow accessing to command that you type previously. There are several options to control command history behavior. Set corresponding variables in your ~/.bashrc file (which is read by interactive shell):

#   ignorespace do not save lines that start with space
#   erasedups all previous lines matching the current line to be removed from
#             the history list before that line is saved
export HISTCONTROL=igrorespace:erasedups
export HISTIGNORE=" ?cd *":"e *":"sudo mv *":"sudo rm *":"sudo cp *":"sudo mkdir *":"sudo chmod *":"sudo chown *":ls:pwd:"vlc*"

There are another options, with default values (which satisfy my needs, so I don't put they to ~/.bashrc):

export HISTFILE=~/.bash_history  # where is command history stored
export HISTFILESIZE=500          # how many lines been in $HISTFILE
export HISTSIZE=500              # how many lines been stored in bash process

mc (GNU Midnight Commander).

You can also set special history rules for mc subshell in ~/.mc/bashrc file.

Bash history.

http://wiki.bash-hackers.org/scripting/bashchanges
This article is an incomplete overview of changes to Bash over the time.

Exploring values

Display all or specific variable declarations:

$ declare -p
$ declare -p NAME1 NAME2

Display defined functions:

$ declare -F
$ declare -F NAME1 NAME2

Display function body:

$ declare -f NAME