122 lines
4 KiB
Text
122 lines
4 KiB
Text
Bash Configuration for Debian
|
|
-----------------------------
|
|
|
|
A number of patches for the bash sources is applied for the Debian build
|
|
of bash. See the details at the end of the file.
|
|
|
|
The bash package was built using the following configuration options:
|
|
|
|
--with-curses \
|
|
--enable-largefile \
|
|
|
|
bash-static additionally configured with --enable-static-link.
|
|
|
|
The upstream ChangeLog can be found in the bash-doc package.
|
|
|
|
|
|
A kind of FAQ for bash on Debian GNU/{Linux,Hurd}
|
|
-------------------------------------------------
|
|
|
|
1. symlinked directory completion behavior
|
|
|
|
Starting with readline-4.2a, completion on symlinks that point
|
|
to directories does not append the slash. To restore the behaviour
|
|
found in readline-4.2, add to /etc/inputrc or ~/.inputrc:
|
|
|
|
set mark-symlinked-directories on
|
|
|
|
2. How can I make bash 8-bit clean so I can type hi-bit characters
|
|
directly?
|
|
|
|
Remove the comments from the indicated lines in /etc/inputrc.
|
|
It doesn't ship this way because otherwise the Meta bindings will not work.
|
|
|
|
3. How to get rid off annoying beeps for ambiguous completions?
|
|
|
|
Put in /etc/inputrc (or in your ~/.inputrc):
|
|
|
|
set show-all-if-ambiguous on
|
|
|
|
Other people prefer:
|
|
|
|
set bell-style none
|
|
|
|
4. bash doesn't display prompts correctly.
|
|
|
|
When using colors in prompts (or escape characters), then make sure
|
|
those characters are surrounded by \[ and \]. For more information
|
|
look at the man page bash(1) and search for PROMPTING.
|
|
|
|
5. What is /etc/bash.bashrc? It doesn't seem to be documented.
|
|
|
|
The Debian version of bash is compiled with a special option
|
|
(-DSYS_BASHRC) that makes bash read /etc/bash.bashrc before ~/.bashrc
|
|
for interactive non-login shells. So, on Debian systems,
|
|
/etc/bash.bashrc is to ~/.bashrc as /etc/profile is to
|
|
~/.bash_profile.
|
|
|
|
6. bash does not check $PATH if hash fails
|
|
|
|
bash hashes the location of recently executed commands. When a command
|
|
is moved to a new location in the PATH, the command is still in the PATH
|
|
but the hash table still records the old location.
|
|
|
|
For performance reasons bash does not remove the command from the hash
|
|
and relook it up in PATH.
|
|
|
|
Use 'hash -r' manually or set a bash option: 'shopt -s checkhash'.
|
|
|
|
7. Bourne-style shells have always accepted multiple directory name arguments
|
|
to cd. If the user doesn't like it, have him define a shell function:
|
|
|
|
cd()
|
|
{
|
|
case $# in
|
|
0|1) ;;
|
|
*) echo "cd: too many arguments ; return 2 ;;
|
|
esac
|
|
builtin cd "$@"
|
|
}
|
|
|
|
8. key bindings for ESC
|
|
|
|
Consider the following .inputrc:
|
|
|
|
set editing-mode vi
|
|
|
|
keymap vi
|
|
"\M-[D": backward-char
|
|
"\M-[C": forward-char
|
|
"\M-[A": previous-history
|
|
"\M-[B": next-history
|
|
|
|
And, just to be certain, set -o reports that vi is on.
|
|
|
|
However, ESC k does not send me to the previous line.
|
|
|
|
I'm guessing that this is a conflict between bash's concept of a meta
|
|
keymap and its concept of vi's command-mode character -- which is to
|
|
say that its data structures don't properly reflect its implementation.
|
|
|
|
Note that if I remove the meta prefix, leaving lines like:
|
|
"[A": previous-history
|
|
|
|
That vi command mode keys work fine, and I can use the arrow keys in vi
|
|
mode, *provided I'm already in command mode already*. In other words,
|
|
bash is doing something wrong here such that it doesn't see the escape
|
|
character at the beginning of the key sequence even when in vi insert mode.
|
|
|
|
Comment from the upstream author: "This guy destroyed the key binding for
|
|
ESC, which effectively disabled vi command mode. It's not as simple as he
|
|
paints it to be -- the binding for ESC in the vi insertion keymap *must*
|
|
be a function because of the other things needed when switching
|
|
from insert mode to command mode.
|
|
|
|
If he wants to change something in vi's command mode, he needs
|
|
to use `set keymap vi-command' and enter key bindings without
|
|
the \M- prefix (as he discovered)."
|
|
|
|
|
|
Patches Applied to the Bash Sources
|
|
-----------------------------------
|
|
|