Comandos executados quando o terminal está aberto não aparecem no histórico

2

Eu tenho o seguinte script simples terminal.sh :

#bin/bash --login
str=(--tab --title="Test" -e "bash --login -c 'echo history';bash")
gnome-terminal "${str[@]}"
exit 0

Eu basicamente uso para abrir um terminal com várias abas que eu preciso usar diariamente. Mas o problema é que o comando echo history não é adicionado ao histórico dessa guia. Por exemplo, uma das minhas guias é o servidor de aplicativos. Quando preciso reiniciá-lo, geralmente eu digito Ctrl + C , Ctrl + L , Up e Enter , mas quando eu uso este script para executá-lo, ele não adiciona a linha executada no bash, e então o último comando executado é normalmente exit . Então acabo fechando a aba em vez de reiniciar o servidor, o que é incrivelmente chato.

Eu vi este e tentei adicionar:

HISTFILE=~/.bash_history
set -o history

Para o início do meu script terminal.sh , e também tentei adicionar ao script executado:

str=(--tab --title="Test" -e "bash --login -c 'HISTFILE=~/.bash_history;set -o history;echo a';bash")

Mas nem ajudou. Eu também tentei adicionar history -s echo history antes de executar o script, mas isso também não ajudou.

Como posso adicionar todos os comandos executados desta maneira ao histórico?

Eu também tentei:

#bin/bash --login

cmd='echo test'
cmd_e="bash --login -c 'unset PROMPT_COMMAND;history -s '\''$cmd'\''; eval '\''$cmd'\''';bash"
str=(--tab --title="History Test" -e "$cmd_e")

gnome-terminal "${str[@]}"

exit 0
    
por Luan Nico 21.05.2014 / 13:27

1 resposta

3

Você pode fazer algo como:

SHELL=/bin/bash PROMPT_COMMAND='unset PROMPT_COMMAND; history -s "$CMD";
    eval "$CMD"' CMD='vi /etc/issue' gnome-terminal

(aqui usando vi /etc/issue como seu comando).

Isso tem a vantagem de executar $CMD como um trabalho desse shell, assim você pode suspender o currículo, interrompê-lo como outros trabalhos e pode afetar o ambiente do shell (por exemplo, você pode fazer CMD='PATH=$foo:$PATH' ).

Ele assume que seu ~/.bashrc não define $PROMPT_COMMAND em si.

Editar:

Para várias guias:

PROMPT_COMMAND='unset PROMPT_COMMAND; history -s "$CMD"; eval "$CMD"
  ' gnome-terminal --tab --title /etc/issue -e 'env CMD="vi /etc/issue" bash' \
                   --tab --title who -e 'env CMD=who bash'
    
por 21.05.2014 / 15:10