Eu gostaria de ter um comando ou script que abra uma nova janela do gnome-terminal com o bash e carregue um arquivo de histórico e permaneça aberto .
Eu procurei como abrir um terminal e executar um comando sem ele fechar, e as respostas que encontrei são essencialmente resumidas em esse stackoverflow responder .
Com base nesses métodos, tentei executar o seguinte comando:
gnome-terminal -e "bash -c 'history -r ~/history.txt; exec $SHELL'"
No entanto, o histórico exibido na nova janela não é o que está em history.txt , mas o que está no arquivo padrão, .bash_history . Eu pensei desde que após o comando history -r estou executando bash , e que origina o arquivo .bashrc , talvez .bashrc esteja fazendo algo que afeta o histórico que eu carreguei.
Com base nisso, tentei a opção rcfile na resposta vinculada acima, para que eu possa incluir comandos após .bashrc , resultando no seguinte rcfile :
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/history.txt
No entanto, quando eu executo o seguinte comando:
gnome-terminal -e "bash --rcfile rcfile"
O histórico no novo terminal ainda é o de .bash_history . Se eu adicionar o comando history ao rcfile ele mostrará que o histórico de history.txt foi carregado, então algo após o rcfile estar sobrescrevendo o histórico que carrego .
Também descobri que, se eu cancelar a variável HISTFILE com export HISTFILE='' no final de rcfile , o histórico de history.txt não será sobrescrito e funciona. No entanto, eu não quero desmarcar HISTFILE porque eu quero que o histórico seja salvo em .bash_history quando eu uso o terminal recém-aberto.
Finalmente, encontrei a opção -o no bash, então tentei fazer o que quero com isso. Eu mudei meu rcfile para:
FILE=~/.bashrc && test -f $FILE && source $FILE
history -c && history -r ~/saved/history.txt
set -o history
e executou o seguinte comando:
bash --rcfile rcfile.txt +o history
Eu esperava que a execução de bash com +o history impediria que o histórico de history.txt fosse sobrescrito, enquanto o comando set -o history no rcfile reativaria o histórico bash. No entanto, isso também não funciona como esperado, já que o histórico é o de history.txt , mas não há mais log de histórico e eu tenho que inserir manualmente set -o history para que ele funcione.
Então, basicamente, tudo que tentei me traz de volta à mesma pergunta: como eu abro o novo terminal com bash e então executo um comando , como se um usuário estavam entrando?
Além disso, eu gostaria de ter um melhor entendimento de o que está acontecendo depois que o rcfile for executado , pois não consegui encontrar nenhum outro arquivo relevante que estava sendo originado. E existe uma maneira de desativar esse comportamento a partir da linha de comando ?