definir 'histórico -r' em --init-file

0

Se eu entrar no meu shell bash

touch $HOME/tmp
echo "last thing" >> $HOME/tmp
history -r $HOME/tmp

e depois na seta para cima, vejo "última coisa".

E se eu colar as mesmas linhas em um script e fornecer o script, obtenho a mesma coisa.

No entanto, não funcionará se eu fizer

bash --init-file <(echo "history -r $HOME/tmp")
    
por Gus 12.03.2017 / 04:46

1 resposta

1

--init-file é processado primeiro e, em seguida, o conteúdo de ${HISTFILE:-$HOME/.bash_history} é carregado normalmente. Se esse arquivo contiver $HISTSIZE entradas, como geralmente será o caso, a entrada carregada por history -r tmp será removida do início da lista do histórico e perdida.

As variantes a seguir funcionam para mim (na versão 4.1.2 do CentOS):

bash --init-file <(echo history -r temp; echo HISTFILE=/dev/null)
# in new shell history contains only the line(s) from temp

bash --init-file <(echo history -r temp; echo let HISTSIZE+=100)
# in new shell history contains the line(s) from temp THEN .bash_history
    
por 12.03.2017 / 16:51