( this post used to cover only baz and omb )
today ill be comparing these plugin managers for GNU BASH :
- baz plugin manager for GNU BASH
- sheldon plugin manager for GNU BASH and ZSH
- oh-my-bash plugin manager for GNU BASH
# testing environment
fresh installation of void linux, GLibC edition
- QEMU
- KVM
- UEFI enabled (
/usr/share/edk2-ovmf/OVMF_CODE.fd
)
- 2048 MB of RAM
- 2 CPU cores
- host CPU : intel i3 8 th generation
- 128 MB of VRAM
- 30 GB QCOW2 storage
- 300 MB boot ( vfat )
- 4 GB swap ( swap )
- 25.7 GB root ( ext4 )
- BASH version :
5.1.16
# collection of data
i just run this command :
| for _ in $(seq 1000); do { /usr/bin/time -f '%e' bash -ic exit 2>&1 | tail -n 1; }; done >out.dat
|
this collects run time for 1000 runs
but please remember to exit the shell at least once and reenter it to reload the plugins fully, and in for example sheldon plugin manager case -- to lock the lockfile and install new plugins, i also reboot the vm every time i install a new plugin manager or install any plugin using it
all omb, sheldon and baz required git
, but sheldon on top of that needed 138 extra creates, rust, cargo, openssl lib, gcc, pkg-config and so on
# data
i have been able to collect 6 data sets :
baz-beefy.dat
baz-startup.dat
omb-beefy.dat
omb-startup.dat
sheldon-beefy.dat
sheldon-startup.dat
-startup
is just normal startup time per average, i made sure to enter the changed env at least once, no plugins or anything of sort, for omb its with all of its default plugins, aliases and etc disabled
-beefy
for baz and omb is the agnoster plugin, and for sheldon, an equivalent beefy plugin -- base16-shell
as theres no documentation on how to make a plugin for sheldon nor is there an agnoster plugin for it
# statistics
i quickly wrote a shitty python script to take care of the data, if you want it, grab it along with all data i collected in # links, its an xz compressed tarball
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 | parsing 'baz-startup.dat'
parsing 'sheldon-startup.dat'
parsing 'sheldon-beefy.dat'
parsing 'baz-beefy.dat'
parsing 'omb-beefy.dat'
parsing 'omb-startup.dat'
statistics for 'baz'
category 'beefy' :
average : 0.01
median : 0.01
total : 12.97
category 'startup' :
average : 0.01
median : 0.01
total : 10.31
statistics for 'omb'
category 'beefy' :
average : 0.11
median : 0.12
total : 112.75
category 'startup' :
average : 0.11
median : 0.12
total : 109.84
statistics for 'sheldon'
category 'beefy' :
average : 0.29
median : 0.28
total : 286.07
category 'startup' :
average : 0.02
median : 0.02
total : 19.41
=== leaderboard ===
in category 'beefy'
#1 baz
#2 omb
#3 sheldon
in category 'startup'
#1 baz
#2 sheldon
#3 omb
in total
#1 baz
#2 omb
#3 sheldon
|
as we can see, baz
is the winner
# plugins used
# opinions
well, i was biased before and now i also got statistics to prove my bias, i love baz and i think its a much better alternative to most other plugin managers for bash, reasons to like it are that its very easy to make plugins for, very easy to use and maintain, its relatively small, its fully open source and under the gpl3 license, its fast, written in pure bash, optimised, etc.
when i found sheldon i expected more from it because its written in a compiled language, apparently it can be worse than omb even, oh well, i think the hype is all because of rust, hope this post contributes something to development of both omb and sheldon
also, if you want me to fairly test all of them ( using one single plugin ) please notify me and link me the plugins, i will immediately get to work updating this blog and if baz underperforms -- i will optimise it more, although at this point i dont think there is much room to optimise, although i think the base16
plugin is as beefy as the agnoster one
# links