bash: nome da variável não sendo expandido com conclusão de tabulação

0

Em um computador remoto com a versão bash "3.2.51 (1) -release" (SO: SUSE Linux Enterprise Server 11.1 (x86_64)), não consegui fazer uma conclusão de tabulação usual com o nome da variável. Por exemplo, eu gostaria de digitar:

echo $OLDPWD/

então, no final da barra, eu posso pressionar "Tab" e o nome da variável seria expandido para o nome do diretório antigo (antes do último comando cd ou pushd ). Isso funciona no meu próprio laptop (Debian 7, Bash 4.2.37 (1) -release). Por que neste shell bash SLES não funcionaria?

Da mesma forma, se eu digitar

echo $OLDP

e, em seguida, pressione "Tab" no final do "P" lá, bash completaria isso para $OLDPWD . Isso não aconteceria no SLES 11 também.

Quais variáveis de controle (shopt? set?) que afetam esse comportamento?

    
por Wirawan Purwanto 05.06.2013 / 18:40

3 respostas

1

shopt -s direxpand fará echo $HOME/<tab> expandir para echo /home/matt/ na bash 4.2. No bash 4.1, deve ser o padrão.

Acho que bash-completion pode realmente atrapalhar as coisas. Eu sempre desinstalo bash-completion ou execuo complete -r para ter certeza de que as regras de conclusão individuais não estão fazendo algo estúpido para as conclusões padrão.

Se $OLDPWD estiver realmente definido, então echo $OLDP<tab> deve se expandir para echo $OLDPWD . Eu não sei o que impediria que isso acontecesse.

    
por 07.06.2013 / 03:53
0

Teste C-x $ em vez de TAB para solicitar explicitamente conclusões possíveis de variável (e não outra coisa).

    
por 12.12.2013 / 21:29
0

Verifique a resposta para urxvt - aba as variáveis de ambiente de expansão por Dmitry Alexandrov.

"This is about direxpand option.

$ shopt -s direxpand and $FOO_PATH/

will be expanded by TAB"

    
por 19.02.2017 / 12:41