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 ?