Когда вы запускаете сценарий оболочки bash, например, запустив исполняемый файл, строка которого #!/bin/bashобозначена как shebang , сценарий запускается в неинтерактивной оболочке. Одной из особенностей неинтерактивной оболочки является то, что история отключена. Поэтому, если вы хотите, чтобы ваш скрипт мог использовать историю, вам нужно сделать что-то вроде этого:
#!/bin/bash
HISTFILE=~/.bash_history # Or wherever you bash history file lives
set -o history # enable history
history | grep git
Конечно, в этом случае вы могли бы просто сделать:
grep git ~/.bash_history
Поскольку оба вышеперечисленных требуют, чтобы файл history ( ~/.bash_history) был обновлен, чего почти наверняка не будет.
Я не уверен, как вы запускаете свой скрипт после удаления строки shebang. Sourcing файл (например., С .) является не то же самое , как работает скрипт , потому что команды выполняются в текущей оболочке, которая действительно имеет историю включен.
bashпользователь v3, из-за простого разочарования, хаха). По крайней мере, для Мартина мое решение было очень полезно, это (по крайней мере) комфорт.