blob: f41dd1771acd71559d3f908f1b3f80741a4d7010 (
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
|
#!/bin/bash
case $- in
*i* )
set -m
;;
* )
exec bash --init-file "$0" -i "$@"
;;
esac
unhijack()
{
case $# in
0 )
exec \
0<&$HIJACK_0 \
1>&$HIJACK_1 \
2>&$HIJACK_2 \
{HIJACK_0}<&- \
{HIJACK_1}>&- \
{HIJACK_2}>&-
;;
* )
echo "history -d -1; unhijack; ${*@Q}"
;;
esac
}
finally()
{
exec \
{HIJACK_0}<&0 \
{HIJACK_1}>&1 \
{HIJACK_2}>&2 \
0< <(unhijack eval "$1") \
&> /dev/null
{
"${@:2}"
} <&$HIJACK_0 >&$HIJACK_1 2>&$HIJACK_2
}
burld_read()
{
sleep 1
read -p '[hullo? burld?]> '
echo "Burly ${REPLY:-Burld!}"
}
quiet_fg()
{
fg "$1" >/dev/null
}
quiet_bg()
{
local STDERR
{
eval "$(printf '%q ' "$@") 2>&\$STDERR {STDERR}>&- &"
} {STDERR}>&2 2>/dev/null
}
ring0()
{
PS1="Burly boo\\\$ "
}
f()
{
quiet_bg burld_read
finally 'ring0' \
quiet_fg burld_read
}
PS1="[type 'f']\\\$ "
|