#!/usr/bin/perl
$hist = `bash -ic 'set -o history; history'`;
print $hist;
(don't ask why set -o history and -i (i.e. interactive) are required... in theory, either option on its own should enable the history)
But note that although this prints a history, it might not be the history you're looking for (the one of the current shell instance that you run this Perl script from(?)). Rather, it's just the contents of the shell's history file (typically ~/.bash_history), which the new shell instance reads upon startup. This file holds whatever history log was last written to it (normally, when some interactive shell exits). In other words, unless you execute history -w from within the current shell instance prior to running the script, you won't get the current status of its history buffer, which is being held in memory only, otherwise... |