Como desfazer o typo 'set -ovi'?

1

Eu queria executar set -o vi , mas em vez disso eu fiz set -ovi .

Agora, ao verificar set -o , vejo opções extras estranhas, como:

$ set -o
set -o
...
update_terminal_cwd; 

e como resultado, update_terminal_cwd; é impresso em cada comando.

Como faço para desfazer meu erro de digitação sem reiniciar o shell?

    
por kenorb 25.09.2015 / 00:32

3 respostas

5

Se você fez set -ovi , repita como set +ovi o efeito de um será revertido pelo outro.

O que você realmente fez foi ativar a opção detalhada set -o v , que mostra o histórico (se definido) também.

Os valores mais importantes definidos são impressos por echo "$-" , que normalmente é apenas himBH em shells interativos.

Uma lista mais longa de valores é impressa por set -o ou set +o . O primeiro imprimirá uma descrição legível de valores definidos (on) ou unset (off). O último imprimirá uma lista quase completa que pode ser executada de volta para restaurar set state.

Com set -o ou set +o list, verifique o estado detalhado e não definido com qualquer um destes comandos:

set +o verbose
set +o v

Sim, + significa não definido (desativado), estranho, eu entendo.

    
por 25.09.2015 / 22:28
4

set +v

(No caso geral, se set -<char> ativou uma opção, set +<char> irá desativá-la.)

    
por 25.09.2015 / 00:36
1

Ou inspecione as diferenças por meio de algo como (na suposição possivelmente imprudente de que as opções não são transmitidas como as variáveis de ambiente):

set -o > now
bash -ic 'set -o' > default
diff default now
    
por 25.09.2015 / 00:37