Estou usando o bash 4.3.11 (1) e tenho o seguinte plugin de histórico instalado (via .bash_it ):
# enter a few characters and press UpArrow/DownArrow
# to search backwards/forwards through the history
bind '"^[[A":history-search-backward'
bind '"^[[B":history-search-forward'
Quando entro em uma sessão interativa, tudo está bem, mas quando executo comandos remotos ssh host 'ls -als'
por exemplo, vejo a seguinte saída:
: ssh host 'ls -als'
/home/ubuntu/.bash_it/plugins/enabled/history.plugin.bash: line 3: bind: warning: line editing not enabled
/home/ubuntu/.bash_it/plugins/enabled/history.plugin.bash: line 4: bind: warning: line editing not enabled
Quando modifico o plug-in de histórico echo -e '\0033\0143'
após cada chamada de ligação, não recebo mais os avisos, mas meu console está limpo. Não é uma grande desvantagem, mas seria bom conhecer uma maneira mais limpa de suprimir isso para comandos remotos.
# Works, but annoyingly clears console
# enter a few characters and press UpArrow/DownArrow
# to search backwards/forwards through the history
bind '"^[[A":history-search-backward'
echo -e '\0033\0143'
bind '"^[[B":history-search-forward'
echo -e '\0033\0143'
Ter uma sessão interativa não é suficiente para
bind
funcionar. Por exemplo, o emacs shell fornece uma sessão interativa que passa noif [ -t 1 ]
teste, mas não possui a edição de linha, portanto qualquerbind
s no seu~/.bashrc
gera os avisos. Em vez disso, você pode verificar se a edição de linha está ativada fazendo algo assim (existe uma maneira mais simples / melhor?):fonte
[[ ${SHELLOPTS} =~ (vi|emacs) ]] && echo 'line-editing on' || echo 'line-editing off'
Coloque os comandos bind em uma instrução 'if' que verifique se a sessão bash permite a edição de linha:
fonte
Se não houver edição de linha, esses
bind
comandos serão inofensivos. Suprima os avisos:Isso é um tanto deselegante, mas deve funcionar. Outras respostas não concordam sobre o melhor / suficiente teste. Minha abordagem contorna isso. Mas não escala bem. Os dois comandos por si só não devem fazer uma grande diferença; mas se você tivesse mais, como dezenas, uma condicional adequada provavelmente seria melhor.
fonte