Большинство команд unix реализованы в виде исполняемых файлов, и оператор backtick дает вам возможность выполнять эти команды из вашего скрипта.Однако некоторые команды, которые интерпретируются bash, не являются исполняемыми файлами;это функции, встроенные в саму команду bash.history
- одна из таких команд.Единственный способ выполнить эту команду - сначала выполнить bash, а затем попросить ее выполнить эту команду.
Вы можете использовать команду type
, чтобы сообщить вам тип конкретной команды, чтобы узнать, можете ли вы выполнить ее из ruby (или сценариев python, perl, Tcl и т. Д.).Например:
$ type history
history is a shell builtin
$ type cat
cat is /bin/cat
Вы также обнаружите, что не можете выполнять псевдонимы, определенные в вашем файле .bashrc, поскольку они также не являются исполняемыми файлами.
Это помогаетпомните, что выполнение команды означает не «запустить эту команду оболочки», а «запустить этот исполняемый файл».Если это не исполняемый файл, вы не можете его выполнить.