Когда вы запускаете сценарий оболочки 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, из-за простого разочарования, хаха). По крайней мере, для Мартина мое решение было очень полезно, это (по крайней мере) комфорт.