por que o bash não exibe os resultados de um comando 'bind -p'?

1

bash se recusa a me dar a saída de 'bind -p' quando eu passá-lo com a opção -c:

bash -c 'bind -p'

mas funciona para digitar

bind -p

diretamente no prompt do bash, e funciona para digitar algo como

bash -c 'echo "hi"'

e zsh fazem exatamente o que o bash se recusa a fazer (bem, o comando equivalente no zsh):

zsh -c 'bindkey -L'

O que diabos está acontecendo ???

    
por iconoclast 03.11.2010 / 05:13

2 respostas

3

Quando você executa bash com a opção -c , bash é executado no modo não interativo. Aparentemente, o bind builtin não gera saída quando o bash está no modo não interativo. Você pode forçar bash para o modo interativo, fornecendo a opção -i . O seguinte funciona para mim:

bash -i -c 'bind -p'
    
por 03.11.2010 / 05:24
0

OK, tenho uma resposta parcial que acabei de descobrir depois de inserir minha pergunta ...

Se eu digitar

bash -c "set -o emacs && bind -p"

, em seguida, fornece a saída do comando bind. Parece que por algum motivo o bash não tem um mapa de chaves padrão, o que é realmente estranho.

(Eu tive algo originado pelo meu .bash_profile que tinha um erro - algo que funcionava bem em zsh mas que bash bloqueava (aparentemente bash não permite usar 'else' em scripts!)) - e assim Eu o desativei, imaginando que as configurações padrão seriam mais limpas de qualquer maneira.)

É quase impensável que o bash não seja padronizado para um vi ou um keymap do emacs. Ou há algo mais acontecendo que está me escapando?

    
por 03.11.2010 / 05:20

Tags