$ time sh -c exit
real 0m0.002s
user 0m0.001s
sys 0m0.000s
$ time ruby -e exit
real 0m0.009s
user 0m0.008s
OTOH I do agree that it is a bit silly to start a Ruby interpreter if you're only going to use it to shell out :)
Because the time it would take them to check the arcane shell syntax would dwarf the time it takes for them to throw a Ruby script together.
Because they like using a superior programming language over the cruft that are the shell syntaxes.
Because they can add more fancy stuff and features to the Ruby version far more easily.
Because they can incorporate the Ruby version to a larger program later on.
file="~/.gitshots/$(date).jpg" echo "Taking capture into ${file}!" imagesnap -q -w 3 $file
#!/bin/sh imagesnap -q -w 3 "~/.gitshots/$(date).jpg"
Plus the above wont even work as is, since $(date) contains spaces.
This would be "more direct" part.