blob: b571a529323b94d9f7a704fb104f566350a29774 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/bin/bash
#
# usage: bashrun [geometry] (default: 40x1)
#
# NOTE: commands entered will have an '&' appended before being run,
# so don't append it yourself, it will fail silently.
#
# rcfile: $HOME/.bashrunrc
#
# ---------------------------------------------------------------------
GEOM=${1:-40x1}
# create .bashrunrc unless present
BASHRUNRC=$HOME/.bashrunrc
if [ ! -f $BASHRUNRC ]; then
(
cat <<'EOF'
# which X terminal to use:
# (xterm|rxvt|urxvt|mrxvt|aterm|mlterm)
XTERM=urxvtc
# history file and options:
HISTFILE=$HOME/.bashrun_history
HISTCONTROL=ignoredups:erasedups
# bind <TAB> to menu-complete. Makes <TAB> cycle through completions on
# the current line instead of paging all possible completions
bind '"\t": menu-complete'
# bind <C-g> to send ^D
# (<C-g> is the default quit-chain-key in emacs, ratpoison, etc)
bind '"\C-g"':"\"\x04\""
# set a simple prompt
PS1=">"
# ***DO NOT EDIT BEYOND THIS LINE***
#
# bind ENTER to add ' &' to command
bind '"\x0d"':"\" &\n\""
EOF
) > $BASHRUNRC
fi
. $BASHRUNRC
error() {
if [ `which zenity` ]; then
zenity --title bashrun --error --text "$@"
elif [ `which kdialog` ]; then
kdialog --title bashrun --error "$@"
elif [ `which xmessage` ]; then
xmessage "$@"
fi
echo -en "\007"
echo $@
}
# run bash terminal
if [ "$XTERM" = "xterm" ]; then
$XTERM -name 'bashrun' \
-title 'bashrun' \
-geometry $GEOM \
-e "/bin/bash --rcfile $BASHRUNRC -i -t"
elif [[ "$XTERM" = "aterm" || "$XTERM" = "mlterm" ]]; then
$XTERM -name 'bashrun' \
-title 'bashrun' \
-geometry $GEOM +sb \
-e /bin/bash --rcfile $BASHRUNRC -i -t
elif [[ "$XTERM" = "urxvt" || "$XTERM" = "rxvt" ]] || [ "$XTERM" = "urxvtc" ]; then
$XTERM -name 'bashrun' \
-title 'bashrun' \
-geometry $GEOM \
-e sh -c "/bin/bash --rcfile $HOME/.bashrunrc -i -t"
elif [ "$XTERM" = "mrxvt" ]; then
$XTERM -name 'bashrun' \
-title 'bashrun' \
-geometry $GEOM +sb -ht \
-e sh -c "/bin/bash --rcfile $BASHRUNRC -i -t"
else
error "$XTERM is not supported. Please check $BASHRUNRC"
exit 1
fi
# history cleanup...
# remove trailing whitespace and '&' from the last history line
tac $HISTFILE | sed "1s/\&//;s/ *$//" | tac > $HISTFILE
# HISTCONTROL won't work on its own because bash applies the
# 'ignoredups' and 'erasedups' rules to 'command &'.
# apply 'ignoredups' if set
if [[ "$HISTCONTROL" =~ "ignoredups" || "$HISTCONTROL" =~ "ignoreboth" ]]; then
uniq $HISTFILE $HISTFILE.tmp
mv $HISTFILE.tmp $HISTFILE
fi
# apply 'erasedups' if set
if [[ "$HISTCONTROL" =~ "erasedups" ]]; then
tac $HISTFILE | gawk '!x[$0]++' - | tac > $HISTFILE
fi
|